我有一个启动活动,可以检查用户是否第一次登录。如果用户已经登录,我使用共享首选项来保存。但是,在干净安装应用程序(我卸载了以前的版本)之后,我仍然得到一个真正的答案,这意味着它不是用户第一次登录。
这是检查用户是否已登录的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)。
什么可能导致这种奇怪的行为?
答案 0 :(得分:1)
如果您在清单文件中提及 android:allowBackup="true"
,则会在卸载过程中备份和维护您的数据,这在开发过程中可能不受欢迎。
默认值为true。
您应该设置 android:allowBackup="false"
,以便在卸载时不保留应用程序数据。
以下是使用该属性的 this boilerplate 。
答案 1 :(得分:0)
我发现了问题。我在应用程序的清单文件中有以下行。
<application
android:allowBackup="true"
....
</aplication>
一旦我将值更改为false,一切正常。