在实施架构组件方面是否有改进的余地,或者通常考虑:
1)注意:如果您选择使用AuthStateListener,请确保在启动FirebaseUI流之前取消注册,并在流返回后重新注册它.FirebaseUI在内部执行auth操作,这可能会在流程完成之前触发侦听器.
LiveData
public class FirebaseAuthLiveData extends LiveData<FirebaseUser> {
private FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
private FirebaseAuth.AuthStateListener authStateListener =
new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
setValue(firebaseUser);
}
};
@Override
protected void onActive() {
super.onActive();
firebaseAuth.addAuthStateListener(authStateListener);
}
@Override
protected void onInactive() {
super.onInactive();
firebaseAuth.removeAuthStateListener(authStateListener);
}
}
Run Code Online (Sandbox Code Playgroud)
视图模型
public class FirebaseAuthViewModel extends ViewModel {
private final FirebaseAuthLiveData firebaseAuthLiveData = new
FirebaseAuthLiveData();
public LiveData<FirebaseUser> getFirebaseAuthLiveData() {
return firebaseAuthLiveData; }
}
}
Run Code Online (Sandbox Code Playgroud)
ManiActivity
@Override
protected …Run Code Online (Sandbox Code Playgroud) firebase firebase-authentication android-livedata android-viewmodel