我使用共享首选项来获取和存储变量,然后在不同的类中获取该变量。重新启动应用程序后,存储的初始变量将由新变量更新。我可以看到,退出应用程序时,我应该将我的共享首选项设置为清除,然后再次获取获取值。
但是,问题是即使重新启动,共享首选项仍然存储旧值并且不会自行更新。
这是我最初保存值的代码
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/