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.

Christian Müller
quelle

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 ).

Christian Müller
quelle
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