android - 退出 Firebase AuthUI 时单击两次错误
问题描述
退出 Firebase AuthUI 时单击两次错误:
当我单击“退出”时,它会显示“您已登录”。
当我第二次单击“退出”时,它返回到 SignInActivity。
MainActivity.java
case R.id.menu_sign_out:
AuthUI.getInstance().signOut(MainActivity.this);
startActivity(new Intent(MainActivity.this, SignInActivity.class));
SignInActiviy.java
mAuthStateListener = new FirebaseAuth.AuthStateListener()
{
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth)
{
FirebaseUser user = firebaseAuth.getCurrentUser();
Log.d(TAG, "[SignInActivity]current user:" + user);
if (user != null)
{
//user is signed in
Toast.makeText(SignInActivity.this, "You're signed in.", Toast.LENGTH_SHORT).show();
startActivity(new Intent(SignInActivity.this, MainActivity.class));
}
}
};
@Override
protected void onPause()
{
super.onPause();
if (mAuthStateListener != null)
{
mFirebaseAuth.removeAuthStateListener(mAuthStateListener);
}
}
@Override
protected void onResume()
{
super.onResume();
mFirebaseAuth.addAuthStateListener(mAuthStateListener);
}
解决方案
使用“.addOnCompleteListener”解决问题
Firebase AuthUI 似乎是异步的
所以在退出后立即调用登录
退出过程尚未完成。
AuthUI.getInstance().signOut(this)
.addOnCompleteListener(new OnCompleteListener<Void>()
{
public void onComplete(@NonNull Task<Void> task)
{
StartActivity(new Intent(MainActivity.this, SignInActivity.class));
}
});
推荐阅读
- c++ - 比 LLVM 中的 floor/ceil/int 慢得多
- r - 如何替换R中数据框中的数据?
- ios - 从 UICollectionView 缩放 segue
- r - 有没有办法让 X 上的最大值(在 X、Y、Z 中)决定 R 中 V 的值?
- html - 将 SVG 图标嵌入 html
- python - 使用 Python Keras multi_gpu_model 和 LSTM / GRU 预测 Timeseries 数据的数据缩放问题
- amazon-web-services - XRay 跟踪未显示在 AWS 控制台中
- rspec - “让”在 RSpec 测试中真正节省了多少时间?
- mysql - 数据集中不同名称的平均长度
- python - tkinter 选项卡中的滚动条无法正常工作。滚动条位于我的 gui 应用程序的底部,而不是覆盖整个选项卡