2010-09-13 6 views
5

Tengo un problema extraño, que SharedPreference de mi aplicación parece haber perdido algunas teclas específicas (no todas) cuando el teléfono se reinicia.Android, SharedPreference perdido cuando el teléfono se reinicia

¿Alguna vez ha tenido este problema? Utilicé esa clave para almacenar un objeto serializado y lo hice en mi propia clase de aplicación.

public class Application extends android.app.Application { 

static String key = "favs"; 
SharedPreferences settings; 
public Favs favs; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    settings = PreferenceManager.getDefaultSharedPreferences(this); 
    String value = settings.getString(key, ""); 
    if (value != null && value.length() > 0) { 
     try { 
      Favs = (Favs) deSerialize(value.getBytes()); 
     } catch (Exception ex) { 
     } 
    } 
    if(favs == null) 
     favs = new Favs(); 
} 

public void storeFavss() { 
    if (favs == null) 
     return; 
    try { 
     byte[] bytes = serialize(favs); 
     if(bytes != null) 
     { 
      String s = new String(bytes); 

      settings.edit().putString(key, s); 
      settings.edit().commit(); 
     } 
    } catch (Exception ex) { 

    } 
} 
+1

poner algunos registros en el bloque catch, lo que podría ayudar en el pin que apunta hacia el tema. – bhups

Respuesta

2

Después de la depuración, mostraré mi propia guía aquí, espero que pueda ayudar a los demás.

  1. el código siguiente es malo. parece que el método edit() devuelve un nuevo objeto cada vez.

    settings.edit().putString(key, s); 
    settings.edit().commit(); 
    
  2. Si va a guardar algunos bytes de objetos serializados en el SharedPreference, Base64 él!

1
favs = (Favs) deSerialize(value.getBytes()); 
Cuestiones relacionadas