gpt4 book ai didi

android - 即使在清除它之后,仍然从共享首选项中读取值

转载 作者:行者123 更新时间:2023-11-30 04:01:54 27 4
gpt4 key购买 nike

我在 SharedPreferences 中为登录用户存储身份验证 token ,并在注销时清除首选项。

private void doSignOut(){
SharedPreferences pref= getSharedPreferences(Constants.SHARED_PREF_DIR, Context.MODE_PRIVATE);
Editor editor = pref.edit();
editor.clear();
editor.apply();
boolean isCleared = editor.commit();
FLog.d("Is Pref cleared = " + isCleared);
mDbHelper.onUpgrade(mDbHelper.getWritableDatabase(), 0, 0);
mDbHelper.close();
Intent intent = new Intent(this, SignInActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}

然后在我的 SignInActivity 中检查 authToken

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
checkForSignIn();

}

private void checkForSignIn() {
SharedPreferences pref = getSharedPreferences(Constants.SHARED_PREF_DIR, Context.MODE_PRIVATE);
String authToken = pref.getString(Constants.SHARED_PREF_AUTH, null);
if(null == authToken){
showAnimations();
} else {
FLog.d("AuthToken already present " + authToken);
Intent intent = new Intent(getApplicationContext(), com.ribbon.ribbon.MainNavigationActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}

问题是在 checkForSignIn() 中,authToken 不是 null,而是保存实际值。

我在注销前检查了首选项 xml,它包含值,而它在注销后被清除。

这是怎么回事?我错过了一些非常明显的东西吗?请帮忙。

最佳答案

终于,我让它工作了。问题是这两个 Activity 处于不同的进程中(因为我在我的应用程序中使用了多个 MapView)。在 docs 中提到SharedPreferences 不支持在不同进程下使用。所以我将 SignInActivity 和另一个移动到同一个主进程中,现在它运行良好。

这对我来说是一个非常明显的错误,我不得不为此挠头 4 个小时。所以这可能会帮助处于类似情况的人。

关于android - 即使在清除它之后,仍然从共享首选项中读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12366669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com