我是android和java的新手。我尝试使用SharedPreferences来管理会话。一旦我登录屏幕,我就会在代码下面写一下。
SharedPreferences prefs = getSharedPreferences("myPref", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("login", true);
editor.commit();
当我关闭应用程序并再次启动时,它直接进入主屏幕而不询问凭据。 我不知道在哪里写下这些行:
SharedPreferences prefs = getSharedPreferences("myPref", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.clear();
editor.commit();
即使应用直接关闭,我也要清除SharedPreferences。我尝试了最终确定,但没有奏效。
修改:
我将以下代码添加到我的文件中。它正在发挥作用但却出错。
代码:
protected void onStop() {
SharedPreferences prefs = getSharedPreferences("myPref", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("login", false);
editor.commit();
}
错误:
android.app.SuperNotCalledException: Activity {com.ec.testtab/com.ec.testtab.Tabs} did not call through to super.onStop()
答案 0 :(得分:2)
最好在您的应用关闭时将prefs
设置为 false 。当你再次回来时,你只需要检查 prefs 值 true 或 false 。
false ---表示不登录
true ----表示已登录
答案 1 :(得分:1)
我已经在这两种活动方式中处理了这些事情,他们也会在你的情况下调用它们,所以试一试:
@Override
protected void onResume() {
super.onResume();
// Start Logging
}
@Override
protected void onPause() {
super.onPause();
// End Logging
}
答案 2 :(得分:1)
如果您不希望在应用程序关闭时存储共享首选项,则应在每次启动应用程序时清除共享首选项,以便在执行应用程序的进一步过程时不会出现以前的共享首选项。
答案 3 :(得分:0)
用户使用有效凭据登录应用后,只会将共享首选项登录值更改为true。
SharedPreferences prefs = getSharedPreferences("myPref", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("login", true);
editor.commit();
每次Oncreate都会检查"登录"用于确定用户是否已登录的值。
答案 4 :(得分:0)
共享偏好用于持久存储,如果您不需要下一个启动器的商店信息,请使用public static boolean isLogin
可能是一种简单的方法:
public static boolean sIsLogin = false;
...
if(doLogin()){
sIsLogin = true;
}
...
当您关闭应用并重新开始时,sIsLogin
为假。
答案 5 :(得分:0)
You can add this lines of code
SharedPreferences prefs = getSharedPreferences("myPref", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("login", false);
editor.commit();
when your app starts before fetching the username and password from the preferences. So that every time you start the app it will show login page.