SharedPreferences包含方法返回始终为true

时间:2018-05-22 10:05:21

标签: android sharedpreferences

我有一个启动活动,可以检查用户是否第一次登录。如果用户已经登录,我使用共享首选项来保存。但是,在干净安装应用程序(我卸载了以前的版本)之后,我仍然得到一个真正的答案,这意味着它不是用户第一次登录。

这是检查用户是否已登录的if条件:

SharedPreferences prefs = getSharedPreferences(Login.LOGIN_PREF, Context.MODE_PRIVATE);
                if(prefs.contains(Login.REMEMBER_USER) &&
                        prefs.getBoolean(Login.REMEMBER_USER, false)) {

                    NetworkManager.login(SplashActivity.this, SplashActivity.this);
                }
                else{

                    Intent in = new Intent(SplashActivity.this, Login.class);
                    startActivity(in);
                    finish();
                }

所以流程是:在卸载应用程序之后,然后重新安装它,我在检查条件下停止并且它应该是假的,因为它是第一次运行,但它返回true,并进入NetworkManager部分,而它应该去登录部分。

注意:它仅在某些设备上发生(Galaxy S6)。

什么可能导致这种奇怪的行为?

2 个答案:

答案 0 :(得分:1)

如果您在清单文件中提及 android:allowBackup="true" ,则会在卸载过程中备份和维护您的数据,这在开发过程中可能不受欢迎。

默认值为true。

您应该设置 android:allowBackup="false" ,以便在卸载时不保留应用程序数据。

以下是使用该属性的 this boilerplate

答案 1 :(得分:0)

我发现了问题。我在应用程序的清单文件中有以下行。

<application
        android:allowBackup="true"
....
</aplication>

一旦我将值更改为false,一切正常。