Java 用户等待FirebaseAuth验证时显示SplashScreen
我正试图在我的应用程序上显示一个启动屏幕,我已经设法使用一个处理程序和一个可运行的对象来创建一个intent,2秒钟后使用创建的intent将活动更改为我的登录活动 但是,现在我已经设置了Firebase身份验证。我试图构建与预期行为相匹配的意图:Java 用户等待FirebaseAuth验证时显示SplashScreen,java,android,firebase-authentication,Java,Android,Firebase Authentication,我正试图在我的应用程序上显示一个启动屏幕,我已经设法使用一个处理程序和一个可运行的对象来创建一个intent,2秒钟后使用创建的intent将活动更改为我的登录活动 但是,现在我已经设置了Firebase身份验证。我试图构建与预期行为相匹配的意图: (用户登录-->显示屏幕-->跳过登录活动) (用户未在-->显示屏幕-->显示登录活动中签名) 以下是我目前正在编写的代码: public class SplashScreenActivity extends AppCompatActivity {
(用户登录-->显示屏幕-->跳过登录活动)
(用户未在-->显示屏幕-->显示登录活动中签名)
以下是我目前正在编写的代码:
public class SplashScreenActivity extends AppCompatActivity {
private FirebaseAuth mAuth = null;
private FirebaseAuth.AuthStateListener mAuthListener;
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 1000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_splash_screen);
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in, send to mainmenu
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
startActivity(new Intent(SplashScreenActivity.this, MainMenuActivity.class));
} else {
// User is signed out, send to register/login
startActivity(new Intent(SplashScreenActivity.this, MainActivity.class));
}
}
};
}
}, SPLASH_DISPLAY_LENGTH);
}
}
我已建议导入以缩短代码。问题是应用程序在splashscreen中保持不稳定。问题是您使用的是AuthStateListener。实际上,您只需在不使用AuthStateListener的情况下执行以下操作:
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in, send to mainmenu
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
startActivity(new Intent(SplashScreenActivity.this, MainMenuActivity.class));
} else {
// User is signed out, send to register/login
startActivity(new Intent(SplashScreenActivity.this, MainActivity.class));
}
我可以查看您的
manifest.xml
文件吗?