小编Joh*_*nny的帖子

使用LiveData的FirebaseAuth.AuthStateListener.以下实施是否有改进余地?

在实施架构组件方面是否有改进的余地,或者通常考虑:

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

6
推荐指数
1
解决办法
855
查看次数