0

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

但是,问题是即使在重新启动时,共享首选项仍会存储旧值并且不会自行更新。

这是我最初保存值的代码

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 获取服务器提供的值。但是,我得到旧值和最新值未获取。

谢谢

4

1 回答 1

2

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

 SharedPreferences  settings =getSharedPreferences("cookie",MODE_PRIVATE);
 SharedPreferences.Editor editor = settings.edit();
 editor.putString("cookie", null);
 editor.commit();
于 2013-05-29T05:44:58.577 回答