
kleinerkathe
Dauer-User
- 242
Ich verwende SharedPreferences für einfache Key-Value-Paare.
Jetzt hab ich einmal SharedPreferences verwendet um die Einstellungen des Users zu speichern und einmal um mir intern ein paar handvoll Daten zu speichern.
Wenn ich jetzt bei meiner Hauptactivity, die ein paar Werte der Usereinstellungen braucht, das
aufrufe.
Und später um meine KeyValue-Paare zu verwalten das hier verwende:
Wenn ich direkt nach setTimestamp("timestamp1", 1780000) ein getTimestamp("timestamp1") ausführe, zeigt er mir 1780000 an ... Aber er wird nicht "richtig" gespeichert ...
Der ursprüngliche Beitrag von 09:38 Uhr wurde um 10:29 Uhr ergänzt:
So, hat sich direkt erledigt ... Hab durch Copy&Paste immer den Timestamp 0 gesetzt wenn auf das Backup zurückgegriffen wurde.
Ebenso sollte man (so stands auf SO) die gewünschte Bezeichnung des Preference-File direkt angeben, sondern immer per static final ...
Naja jetzt tuts, ich hab was dazugelernt ... Passt also
Antwort zu 2. Ja scheint unabhängig voneinander zu sein ...
Antwort zu 3. Man könnte noch ne DB anlegen, aber das finde ich für Key-Value-Paare erheblich oversized.
Jetzt hab ich einmal SharedPreferences verwendet um die Einstellungen des Users zu speichern und einmal um mir intern ein paar handvoll Daten zu speichern.
Wenn ich jetzt bei meiner Hauptactivity, die ein paar Werte der Usereinstellungen braucht, das
Code:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().clear();
PreferenceManager.setDefaultValues(this, R.xml.pref_general, false);
Und später um meine KeyValue-Paare zu verwalten das hier verwende:
Code:
public long getLocalTimestamp(String preferenceName){
SharedPreferences sharedPref = BaseActivity.context.getSharedPreferences(PREFERENCE_LITTLE_FILES, Context.MODE_PRIVATE);
long localTimestamp = sharedPref.getLong(preferenceName, [B]0[/B]);
return localTimestamp;
}
public void setTimestamp(String preferenceName, long timestamp){
SharedPreferences sharedPref = BaseActivity.context.getSharedPreferences(PREFERENCE_LITTLE_FILES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putLong(preferenceName, timestamp);
editor.commit();
}
- Warum wird mir nach Neustart der App(die die Methode aufruft um zu schauen wie der "timestamp" der lokalen Dateien ist) immer wieder der Default-Wert "0" ausgespuckt?
- Die beiden Preferences legen doch unabängig voneinander ihre xml-Dateien an oder kommt sich da was in die Quere? (das überprüf ich heut abend selbst, wenn ich wieder ein Gerät mit Root in den Fingern hab)
- Wie speicher ich ansonsten elegant 3 verschiedene Zahlen, welche nach Appneustart immer noch vorhanden sein sollen?
Wenn ich direkt nach setTimestamp("timestamp1", 1780000) ein getTimestamp("timestamp1") ausführe, zeigt er mir 1780000 an ... Aber er wird nicht "richtig" gespeichert ...
Der ursprüngliche Beitrag von 09:38 Uhr wurde um 10:29 Uhr ergänzt:
So, hat sich direkt erledigt ... Hab durch Copy&Paste immer den Timestamp 0 gesetzt wenn auf das Backup zurückgegriffen wurde.
Ebenso sollte man (so stands auf SO) die gewünschte Bezeichnung des Preference-File direkt angeben, sondern immer per static final ...
Naja jetzt tuts, ich hab was dazugelernt ... Passt also

Antwort zu 2. Ja scheint unabhängig voneinander zu sein ...
Antwort zu 3. Man könnte noch ne DB anlegen, aber das finde ich für Key-Value-Paare erheblich oversized.
Zuletzt bearbeitet: