我使用共享首选项来获取和存储变量,然后我在另一个类中获取该变量。重新启动应用程序后,存储的初始变量将由新的变量更新。我可以看到,在退出应用程序时,我应该将我的共享首选项设置为清除,然后再次获取获取值。
然而,问题是即使重新启动,共享首选项仍会存储较旧的值,而不会自行更新。
这是我最初保存值
的代码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获取服务器提供的值。但是,我得到旧值和未获取最新值。
由于
答案 0 :(得分:2)
如果你想清除cookie变量的值,你可以这样做
SharedPreferences settings =getSharedPreferences("cookie",MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("cookie", null);
editor.commit();