Android,SharedPreference在手机重启时丢失

时间:2010-09-13 01:22:59

标签: android

我遇到一个奇怪的问题,当手机重启时,我的应用程序的SharedPreference似乎丢失了一些特定键(不是全部)。

你有没有遇到过这个问题?我用那个键来存储一个序列化对象,我在自己的Application类中做了。

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) {

    }
}

2 个答案:

答案 0 :(得分:2)

经过调试,我会在这里展示自己的anwser,希望它可以帮助别人。

  1. 以下代码不好。似乎edit()方法每次都返回一个新对象。

    settings.edit().putString(key, s);
    settings.edit().commit();
    
  2. 如果要在SharedPreference中保存一些序列化的对象字节,那就是Base64吧!

答案 1 :(得分:1)

favs = (Favs ) deSerialize(value.getBytes());