如何将 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.
中附加一次监听器
我们已将 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.
中附加一次监听器