AL.*_*AL. 3 android firebase firebase-authentication
目前正在计算使用Android(MVP)中的Firebase Auth.我的流程是这样的:
Activity > Presenter > Interactor > AuthHelper
Activity < Presenter < Interactor < AuthHelper
Run Code Online (Sandbox Code Playgroud)
Auth Helper类是直接与FirebaseAuth实例交互的唯一类.我的问题是AuthStateListener在这种情况下的工作原理:
FirebaseAuth.AuthStateListenerInteractor初始化Auth Helper类,通过 AuthStateListener
class MyInteractor implements FirebaseAuth.AuthStateListener {
FirebaseAuth.AuthStateListener listener;
public MyInteractor(){
MyHelper myHelper = new MyHelper(this);
listener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
Log.d("TAG", "onAuthStateChanged called");
}
};
}
public void signOut(){
myHelper.signOut();
}
}
Run Code Online (Sandbox Code Playgroud)助手传递FirebaseAuthInstance给听众
class MyHelper {
private static FirebaseAuth mAuth;
public MyHelper(FirebaseAuth.AuthStateListener listener){
mAuth = FirebaseAuth.getInstance();
listener.onAuthStateChanged(mAuth);
}
public void signOut(){
mAuth.signOut();
}
}
Run Code Online (Sandbox Code Playgroud)myHelper.signOut() 叫做
预期结果:
onAuthStateChanged() 在交互器中会触发.
收到的结果:
onAuthStateChanged() 没有触发.
我尝试了一种不同的方法,我mAuth在调用之后通过了signOut():
public void signOut(){
mAuth.signOut();
listener.onAuthStateChanged(mAuth);
}
Run Code Online (Sandbox Code Playgroud)
这触发了onAuthStateChanged.我在这里错过了什么吗?
经过几次研究,我意识到了这一点
FirebaseAuth.getInstance().addAuthStateListener(listener)
Run Code Online (Sandbox Code Playgroud)
是我真正需要用于我的流程而不是FirebaseAuth.AuthStateListener(mAuth).我误解了它的工作方式,最终咬我.
引用此答案作为主要保护程序.
| 归档时间: |
|
| 查看次数: |
1688 次 |
| 最近记录: |