Java 用户等待FirebaseAuth验证时显示SplashScreen

Java 用户等待FirebaseAuth验证时显示SplashScreen,java,android,firebase-authentication,Java,Android,Firebase Authentication,我正试图在我的应用程序上显示一个启动屏幕,我已经设法使用一个处理程序和一个可运行的对象来创建一个intent,2秒钟后使用创建的intent将活动更改为我的登录活动 但是,现在我已经设置了Firebase身份验证。我试图构建与预期行为相匹配的意图: (用户登录-->显示屏幕-->跳过登录活动) (用户未在-->显示屏幕-->显示登录活动中签名) 以下是我目前正在编写的代码: public class SplashScreenActivity extends AppCompatActivity {

我正试图在我的应用程序上显示一个启动屏幕,我已经设法使用一个处理程序和一个可运行的对象来创建一个intent,2秒钟后使用创建的intent将活动更改为我的登录活动

但是,现在我已经设置了Firebase身份验证。我试图构建与预期行为相匹配的意图:
(用户登录-->显示屏幕-->跳过登录活动)
(用户未在-->显示屏幕-->显示登录活动中签名)
以下是我目前正在编写的代码:

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
文件吗?