6

Ich verwende PreferenceManager.setDefaultValues(context,R.xml.preferences,false), um die Standardwerte der Einstellungen in meiner Anwendung festzulegen, und mir ist aufgefallen, dass meine PreferenceFragment keinen Standardwert dafür anzeigt, wenn ich eine neue Einstellung hinzufüge im preferences.xml ..PreferenceManager.setDefaultValues ​​readAgain-Parameter und neue Einstellungen

gesetzt

, auch wenn es dies aufgrund der Tatsache, dass ich readAgain als falsch angeben?

Ich weiß, ich kann einfach versuchen-und-sehen, aber ich wollte nur sicher sein, dass die readAgain für diesen Zweck gedacht ist, dh die Standardwerte wieder lesen, nicht wieder eingestellt Benutzereinstellungen, sondern setzen die Standardwerte der neuen Eigenschaften. Wenn dies genau der Zweck des readAgain Flags ist, können Sie mir dann einen Grund geben, nicht immer readAgain auf wahr zu setzen, vorausgesetzt, dass Benutzereinstellungen nicht zurückgesetzt werden?

Antwort

4

Wenn Sie das Flag readagain auf true setzen, wird sichergestellt, dass alle nicht festgelegten Standardwerte erneut festgelegt werden. Das ist die Zusammenfassung.

Das Einstellen der readagain wird zusätzliche Overhead verursachen, da es im Grunde bedeutet, dass der Code die gesamte SharedPreference erneut durchlaufen wird, um sie zu überprüfen. Mit der readAgain false, ist es nur zu überprüfen, ob die Datei (has_set_default_values.xml), die als Marker für das Setzen von Standardwerten verwendet wird, vorhanden ist oder nicht.

In jedem Fall wird es keine Werte gesetzt, die bereits festgelegt sind.

+0

Ich dachte über den möglichen Overhead nach ... Ich habe weniger als 10 Voreinstellungen, also sollte es kein Problem sein. Gibt es eine andere Möglichkeit zu überwachen, wenn neue Einstellungen hinzugefügt werden und ein Voreinstellen der Voreinstellung nur in diesem Fall erzwingen? Kann ich zum Beispiel verstehen, wenn eine Anwendung zum ersten Mal nach der Aktualisierung gestartet wird? Vielleicht könnte ich eine Vorliebe wie * last_version_seen * verwenden und es überprüfen, wenn die Anwendung gegen die aktuelle Version gestartet wird und die Voreinstellungen neu laden, wenn * readAgain * auf true gesetzt ist, richtig? –

+1

Rufen Sie den Code von [ChangeLog] (http://code.google.com/p/android-change-log/) auf. Der Name erklärt die Verwendung dieses Code-Satzes. Abgesehen davon können Sie jedoch die Erstprüfung durchführen, indem Sie dafür eine DefaultSharedPreference festlegen. ;-). – Niranjan

+0

@GianniCostanzi Lassen Sie 'readagain' auf true. Wenn es nur 10 Einstellungen sind, warum mit viel mehr Code beschäftigen. Es ist nicht faul, es ist einfach nicht wert, eine weitere Pref zu diesem Zweck von 10-20 Prefs zu erstellen. Aber wenn Ihnen die 'ChangeLog' Bibliothek gefallen hat, die ich Ihnen gezeigt habe, dann fügen Sie das Bit in dieser Datei hinzu.' Cl.firstRun() 'ist irgendwo da drin. :-). Ansonsten lass es einfach wahr. – Niranjan

Verwandte Themen