所以我现在已经摸不着头脑了几个小时,我在我的Android应用程序中使用Firebase身份验证,并且出于某种原因,它一直随机弹出,基本上打开多次,经过研究我发现它可能是方法AuthStateListener。
我尝试添加一个标记,就像那些遇到相同问题但没有用的人一样,如果Firebase用户或身份验证不等于null而没有应用程序自动打开,我应该在哪里开始我的活动。非常感谢任何帮助。
这是我的代码:
mAuthListner= new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if(firebaseAuth.getCurrentUser()!=null){firebaseAuth= FirebaseAuth.getInstance();
//Log.i("User1",firebaseAuth.getCurrentUser().toString());
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if(!isMyServiceRunning(MyService.class))
startService(new Intent(getApplicationContext(), MyService.class));
//prefManager = new PrefManager(getApplicationContext());
if (MyPreferences.isFirst(getApplicationContext()) ||!databaseOperations.checkUser(databaseOperations)) {
launchHomeScreen();
}else {
if(flag){
startActivity(new Intent(MainActivity.this, MainDrawer.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));
finish();
}
flag=false;
}
}
}
};
答案 0 :(得分:0)
当活动停止时,你可能不会删除监听器。如果您不删除它,它将保持注册并收听身份验证事件。身份验证令牌刷新(每小时自动发生一次)可以触发侦听器。
通常,您在onStart期间添加侦听器并在onStop期间删除它们。始终与您的添加并行删除。