繁体   English   中英

应用重启后,SharedPreference不可用

[英]SharedPreference not available after app restart

我试图弄清楚为什么在应用重启后无法访问我的SharedPreference文件。

在onCreate的Application类中,我一次定义了SharedPreference:

pref = getSharedPreferences(Util.PREF_FILE_NAME, Context.MODE_PRIVATE);
editor = pref.edit();

然后在我的活动的onResume中调用:

String userName = MyApp.getApplication().pref.getString(Util.USER_NAME, "");

但是此时,重新启动后用户名始终为空。

-为了保存我的价值:

MyApp.getApplication().editor.putString(Util.USER_NAME,"name").commit();

-对于MyApp.getApplication(),我已经在Application类中定义了:

public MyApp() {
     instance = this;
}
public static MyApp getApplication() {
     if (instance == null) {
         instance = new MyApp();
     }
     return instance;
}

在我的设备上,我运行一个终端应用程序,并使用“ cat”命令,可以看到我的sharedPreference XML文件的内容。 即使我杀死了我的应用程序,我仍然可以看到sharedPreference文件仍然存在,其中包含我的正确值。 但是,当我重新启动我的应用程序时,此值无法读取。 那里发生了什么事?

我注意到在装有android Lollipop的平板电脑上我没有问题,但是在装有android Kitkat的平板电脑上我有此问题。

用于修改SharedPreferences对象中的值的接口。 您在编辑器中所做的所有更改都将被分批处理,并且直到您调用commit()或apply()时,才将其复制回到原始的SharedPreferences中。

所以不要忘记您的editor.commit()

我使用的最佳方式:

实用类

public static void saveIntToUserDefaults(Context c, String Key, int value) {

    SharedPreferences sharedpreferences = c.getSharedPreferences(Constant.PREF_FILE_NAME, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedpreferences.edit();
    editor.putInt(Key, value);
    editor.commit();
    Log.e("Saved:", "" + Key + "-" + value);
}

public static String getFromUserDefaults(Context c, String Key) {

    SharedPreferences sharedpreferences = c.getSharedPreferences(Constant.PREF_FILE_NAME, Context.MODE_PRIVATE);

    return sharedpreferences.getString(Key, "");
}

public static void clearUserDefaults(Context c) {

    SharedPreferences sharedpreferences = c.getSharedPreferences(Constant.PREF_FILE_NAME, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedpreferences.edit();
    editor.clear();
    editor.commit();
}

我在任何需要的地方都称其为它的出色表现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM