重新启动应用程序后更新共享首选项

时间:2013-05-29 02:30:01

标签: java android sharedpreferences

我使用共享首选项来获取和存储变量,然后我在另一个类中获取该变量。重新启动应用程序后,存储的初始变量将由新的变量更新。我可以看到,在退出应用程序时,我应该将我的共享首选项设置为清除,然后再次获取获取值。

然而,问题是即使重新启动,共享首选项仍会存储较旧的值,而不会自行更新。

这是我最初保存值

的代码
protected void onLoginSuccess(String cookieString, String userName) {
    // set cookie and initialize data center.
    mCookieString = cookieString;

     SharedPreferences  settings =getSharedPreferences("cookie",MODE_PRIVATE);
     SharedPreferences.Editor editor = settings.edit();
      editor.putString("cookie", cookieString);
     editor.commit();
      //editor.apply();

    mDataCenter = new LsApiDataCenter(this, userName);
    mCachedUserData.clear();
      System.out.println("shhhhhhhhhhhh iis original : "+cookieString);
    mSendersObservers.clear();
    mMessageObservers.clear();
    mNotificationObservers.clear();

稍后,退出时我希望清除共享首选项,这就是我的工作方式

protected void onLogoutSuccess() {
    // clear cookie and data center.
    SharedPreferences   settings =getSharedPreferences("cookie",MODE_PRIVATE);
     SharedPreferences.Editor editor = settings.edit();
     editor.clear().commit();
    mCookieString = null;
    mDataCenter = null;
    mCachedUserData.clear();

    mSendersObservers.clear();
    mMessageObservers.clear();
    mNotificationObservers.clear();

最后,这是我在一个完全不同的类

中获取它们的方式
SharedPreferences settings = mMainActivity.getSharedPreferences("cookie", Context.MODE_PRIVATE);
        count = settings.getString("cookie","");

问题是我获取的值是旧值而不是最新值,因为我通过用户登录时使用的api获取服务器提供的值。但是,我得到旧值和未获取最新值。

由于

1 个答案:

答案 0 :(得分:2)

如果你想清除cookie变量的值,你可以这样做

 SharedPreferences  settings =getSharedPreferences("cookie",MODE_PRIVATE);
 SharedPreferences.Editor editor = settings.edit();
 editor.putString("cookie", null);
 editor.commit();