Equivalente de Android de NSUserDefaults en iOS

103

Me gustaría guardar algunos datos simples. En el iPhone, puedo hacerlo con NSUserDefaultsObjective-C.

¿Cuál es el comando similar aquí en Android?

Solo estoy guardando algunas variables, para reutilizarlas siempre que la aplicación esté instalada. No quiero usar una base de datos complicada solo para hacer eso.

Christian Muller
fuente

Respuestas:

210

Esta es la solución más simple que he encontrado:

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

Donde 'contexto' es el contexto actual (por ejemplo, en una subclase de actividad podría ser este ).

Christian Muller
fuente
este es el camino a seguir para almacenar cosas muy simples, es simple y directo al grano
smith324
Arreglé el error en el código (llamaba a las getPreferences inexistentes, no a las getSharedPreferences).
Ben Clayton
14
Actualización 2015: Android recomienda el uso de apply () ahora sobre commit () porque apply () opera en un hilo en segundo plano en lugar de almacenar los datos persistentes inmediatamente y posiblemente bloquear el hilo principal.
AppsIntheParkNYC
¿Hay alguna forma de acceder a estas SharedPreferences desde el código jni?
IgorGanapolsky
2
Para obtener el 'contexto' desde adentro AppCompatActivity, puede usargetApplicationContext()
Brainware