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

标签 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 获取服务器提供的值。但是,我获取的是旧值,并且未获取最新值。

谢谢

最佳答案

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

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

关于java - 重新启动应用程序后更新共享首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16804553/

相关文章:

java - 还有其他人在使用 Java 8 和 Android Studio 3.0 时遇到问题吗?

android - AAPT:错误:找不到资源样式/zxing_CaptureTheme(又名.....app:style/zxing_CaptureTheme)

php - 我希望我的 Android 应用程序将数据同步到 MYSQL 以用于我的在线 ERP

java - 我使用 shareDpreferences 将字符串保存在 textView 中,关闭应用程序并再次打开后,它不起作用

android - 每个小部件实例的不同设置

java - 更改自定义 JFileChooser 的外观会引发异常

java - 使用XContentBuilder的Elasticsearch UpdateByQueryRequest

java - while 循环中嵌套 if/else 语句的问题

android - Android 中的 Dots join 和 dash 之类的应用程序

android - Jetpack Compose BottomNavBar 标签重叠图标