Java 如何返回登录活动Firebase authlistener?
我的主要/创业活动是我的重要活动,我包括 Firebase身份验证侦听器Java 如何返回登录活动Firebase authlistener?,java,android,authentication,firebase,Java,Android,Authentication,Firebase,我的主要/创业活动是我的重要活动,我包括 Firebase身份验证侦听器 mFirebase.addAuthStateListener(new Firebase.AuthStateListener() { @Override public void onAuthStateChanged(AuthData authData) { if (authData != null) { // go to auth
mFirebase.addAuthStateListener(new Firebase.AuthStateListener() {
@Override
public void onAuthStateChanged(AuthData authData) {
if (authData != null) {
// go to auth activity
// such as user logging in
} else {
if(!(this instanceof SignInActivity)){
// if i sign out in an auth activity
// i want to trigger this to go back to the SignIn Activity
Intent mIntent = new Intent(getApplicationContext(), SignInActivity.class);
mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mIntent);
finish();
return;
}
}
}
});
在else语句中,if条件不起作用。我知道我不能在嵌套对象中使用这个。我尝试了一些其他的尝试,但我总是得到闪烁,我认为它在一个无限循环结束,因为条件总是满足。正确的方法是什么?试试这个:
mFirebase.addAuthStateListener(new Firebase.AuthStateListener() {
@Override
public void onAuthStateChanged(AuthData authData) {
if (authData != null) {
// go to auth activity
// such as user logging in
} else {
if(!(SignInActivity.this instanceof SignInActivity)){
// if i sign out in an auth activity
// i want to trigger this to go back to the SignIn Activity
Intent mIntent = new Intent(getApplicationContext(), SignInActivity.class);
mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mIntent);
finish();
return;
}
}
}
});
这是否会导致MacActivity始终是SignenActivity的一个实例,因为它在SignenActivity中声明了?如果这里的想法只是在用户重新打开应用程序时检查用户是否登录,您不需要该else语句。如果用户未登录,您就无法执行任何操作。这是原因之一。如果用户在另一个活动中并且用户注销,我希望触发此操作。当点击“注销”按钮/链接时,我将取消对用户的授权,我希望这能抓住这种情况,并重定向到SignenActivity