Android-Äquivalent zu NSUserDefaults in iOS


103

Ich möchte einige einfache Daten speichern. Auf dem iPhone kann ich das NSUserDefaultsin Objective-C machen.

Was ist der ähnliche Befehl hier in Android?

Ich speichere nur ein paar Variablen, um sie wiederzuverwenden, solange die Anwendung installiert ist. Ich möchte nicht nur dafür eine komplizierte Datenbank verwenden.

Antworten:


210

Dies ist die einfachste Lösung, die ich gefunden habe:

//--Init
int myvar = 12;


//--SAVE Data
SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);  
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("var1", myvar);
editor.commit();


//--READ data       
myvar = preferences.getInt("var1", 0);  

Wobei 'Kontext' der aktuelle Kontext ist (z. B. in einer Aktivitätsunterklasse könnte dies sein ).


Dies ist der Weg, um sehr einfache Dinge zu speichern, es ist einfach und direkt auf den Punkt
Smith324

Ich habe den Fehler im Code behoben (habe die nicht vorhandenen getPreferences aufgerufen, nicht getSharedPreferences).
Ben Clayton

14
Update 2015: Android empfiehlt die Verwendung von apply () jetzt anstelle von commit (), da apply () auf einem Hintergrundthread ausgeführt wird, anstatt die persistenten Daten sofort zu speichern und möglicherweise den Hauptthread zu blockieren.
AppsIntheParkNYC

Gibt es eine Möglichkeit, über jni-Code auf diese SharedPreferences zuzugreifen?
IgorGanapolsky

2
Um den 'Kontext' von innen heraus zu erhalten AppCompatActivity, können SiegetApplicationContext()
Brainware
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.