我的应用中有2个活动。我还有一个登录按钮,单击此方法时会调用:
private void signIn() {
firebaseAuth.signInAnonymously().addOnCompleteListener(this, task -> {
if (task.isSuccessful()) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
goToSecondActivity();
}
}
});
}
这是我的goToSecondActivity()
方法:
private void goToSecondActivity() {
startActivity(new Intent(FirstActivity.this, SecondActivity.class));
finish();
}
正如official doc中onStart()
中指定的那样,我检查firebaseUser
对象的无效性如下:
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
goToMapActivity();
}
在第二个活动中,我试图像这样得到用户的uid:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
如果我尝试打印这个uid,一切正常,打印出uid。如果我尝试注销(在SecondActivity中)并再次登录,则会生成一个新的uid,这是正确的。问题是如果我再次注销并卸载应用程序并再次启动它,即使我等了5个小时,也会使用旧用户。
如何解决此问题,如果我退出,下次使用我的应用程序使用上一个生成的用户而不是旧的用户?
答案 0 :(得分:1)
这是因为Android 6具有自动备份功能。如果您不希望备份数据,或者想要包含或排除某些资源,则需要在清单android:allowBackup
代码中调整android:fullBackupContent
和application>
。这不是一个错误。
您可以找到更多信息here
简而言之,为了避免这种行为,有必要将android:allowBackup="false"
和android:fullBackupContent="false"
放在manifest.xml中