Android应用使用Firebase多次打开

时间:2017-03-20 18:19:21

标签: android authentication firebase firebase-authentication

所以我现在已经摸不着头脑了几个小时,我在我的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;

                }
            }
        }
    };

1 个答案:

答案 0 :(得分:0)

当活动停止时,你可能不会删除监听器。如果您不删除它,它将保持注册并收听身份验证事件。身份验证令牌刷新(每小时自动发生一次)可以触发侦听器。

通常,您在onStart期间添加侦听器并在onStop期间删除它们。始终与您的添加并行删除。