2012-01-03 12 views
6

Tengo 2 procesos en mi aplicación. De un proceso, guardo los datos en SharedPreferences. Desde el segundo proceso: recuperar. Cuando recupero datos, recibo SharedPreferences con datos antiguos (compruebo el archivo xml y veo que actualmente los datos en el archivo y los datos recibidos son diferentes). Parece que esta información fue almacenada en caché. Cambié los métodos de guardado (commit/apply) pero no resulté. PS: sólo por ejemplo http://pastebin.com/Zx2ffvSgCaché de datos en Preferencia compartida

//saving 
{ ... 
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_PRIVATE); 
    SharedPreferences.Editor prefsEditor = myPrefs.edit(); 
    prefsEditor.putString(MY_NAME, "Sai"); 
    prefsEditor.putString(MY_WALLPAPER, "f664.PNG"); 
    prefsEditor.commit(); 
... } 

//retrieving 
// when i call getData() I put "this" as argument. 
public void getData(Context context){ 
SharedPreferences myPrefs = context.getSharedPreferences("myPrefs", MODE_PRIVATE); 
...} 
+0

que tendría que ver algo de código a ver dónde está el error –

+0

, creo que no es adecuado en esta situación. Describo el trabajo simple con SharedPreference. Tal vez hay algún "escollo" en mi situación? – x90

+0

Asegúrese de que la clave en el par clave-valor sea la misma. –

Respuesta

17

La solución es añadir a las banderas neccesary bandera Context.MODE_MULTI_PROCESS cuando preferencia compartida abierta (Disponible en el nivel API de 11 y más)

+0

¡Gracias! Salvaste mi día. –

Cuestiones relacionadas