Android odpowiednik NSUserDefaults w iOS

103

Chciałbym zapisać kilka prostych danych. Na iPhonie mogę to zrobić NSUserDefaultsw Objective-C.

Jakie jest podobne polecenie tutaj w systemie Android?

Zapisuję tylko kilka zmiennych do ponownego wykorzystania, o ile aplikacja jest zainstalowana. Nie chcę tylko do tego używać skomplikowanej bazy danych.

christian Muller
źródło

Odpowiedzi:

210

To najprostsze rozwiązanie, jakie znalazłem:

//--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);  

Gdzie „kontekst” jest aktualnym kontekstem (np. W podklasie działania może to być ).

christian Muller
źródło
to jest sposób na przechowywanie bardzo prostych rzeczy, jest prosty i bezpośredni
smith324
Naprawiłem błąd w kodzie (wywoływałem nieistniejące getPreferences, a nie getSharedPreferences).
Ben Clayton,
14
Aktualizacja 2015: Android zaleca teraz użycie metody apply () zamiast commit (), ponieważ apply () działa na wątku w tle zamiast natychmiastowego przechowywania trwałych danych i blokowania głównego wątku.
AppsIntheParkNYC
Czy istnieje sposób uzyskania dostępu do tego SharedPreferences z kodu jni?
IgorGanapolsky
2
Aby uzyskać „kontekst” od wewnątrz AppCompatActivity, możesz użyćgetApplicationContext()
Brainware,