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