当用户直接关闭应用程序时,在哪里清理SharedPrefererence?

时间:2014-09-17 05:39:36

标签: android sharedpreferences

我是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()

6 个答案:

答案 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.