如何将 FirebaseAuth.AuthStateListener 置于连续监听模式,以便在状态发生变化时收到通知

how to put FirebaseAuth.AuthStateListener on continous listening mode so that when the state changes, i get a notification

我们已将 Firebase 身份验证侦听器放在 Android 应用程序的特定 activity 中。它仅在 activity 发生时有效。

auth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        if (firebaseAuth.getCurrentUser() == null) {
            Log.i("firebase", "AuthState changed to null");
        }
        else {
            Log.i("firebase", "AuthState changed to "+firebaseAuth.getCurrentUser().getUid());
        }
    }
});

据我了解,firebase auth 侦听器一直在侦听,并在 firebase auth 状态发生变化时立即触发。但是,在我们的案例中似乎并非如此。我们是否必须将此代码放在每个 activity 中,或者是否有任何方法可以将其放在一个地方,并在 firebase 身份验证状态发生变化时立即通知我们?

您可以从 activity 中获取该代码并将其放入单独的(存储库)class。您可以将身份验证状态保存到一个 LiveData 对象中,该对象可以在您的所有活动中观察到。根据结果​​,您可以在 activity.

中采取一些行动

如果您了解 Kotlin,我已经创建了一个用于学习目的的应用程序,其中我实现了此机制:

另一种解决方案是将单个 activity 包含多个片段。在这种情况下,您只需要在 activity.

中附加一次监听器