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.

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


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.