Équivalent Android de NSUserDefaults dans iOS

103

J'aimerais enregistrer quelques données simples. Sur l'iPhone, je peux le faire avec NSUserDefaultsObjective-C.

Quelle est la commande similaire ici dans Android?

J'enregistre juste quelques variables, à réutiliser tant que l'application est installée. Je ne veux pas utiliser une base de données compliquée juste pour faire cela.

Christian Muller
la source

Réponses:

210

C'est la solution la plus simple que j'ai trouvée:

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

Où «contexte» est le contexte actuel (par exemple dans une sous-classe d'activité pourrait être ceci ).

Christian Muller
la source
c'est la voie à suivre pour stocker des choses très simples, c'est simple et direct
smith324
J'ai corrigé l'erreur dans le code (j'appelais les getPreferences inexistantes, pas getSharedPreferences).
Ben Clayton
14
Mise à jour 2015: Android recommande l'utilisation de apply () maintenant sur commit () car apply () fonctionne sur un thread d'arrière-plan au lieu de stocker les données persistantes immédiatement et éventuellement de bloquer le thread principal.
AppsIntheParkNYC
Existe-t-il un moyen d'accéder à ces SharedPreferences à partir du code jni?
IgorGanapolsky
2
Pour obtenir le `` contexte '' de l'intérieur AppCompatActivity, vous pouvez utilisergetApplicationContext()
Brainware