小编kiv*_*mii的帖子

Firebase数据库侦听器不适用于带wifi的android系统

在我的代码中,用户使用Google登录到Firebase,如下所述:

https://firebase.google.com/docs/auth/android/google-signin

这很好。

用户打开程序时,它将从firebase数据库加载初始化值。这是代码:

private void loadPrefsFromDB() {
    mAuth = FirebaseAuth.getInstance();
    user = mAuth.getCurrentUser();
    uid = user.getUid();
    FirebaseDatabase.getInstance().getReference().child("users").child(uid)
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    userPrefs = dataSnapshot.getValue(UserPrefs.class);
                    updateUI(userPrefs);
                    Log.d(TAG, "loadPrefsFromDB:onDataChange");
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    Log.w(TAG, "loadPrefsFromDB:onCancelled");
                }
            });
}
Run Code Online (Sandbox Code Playgroud)

当wifi连接关闭时,此方法效果很好,但是如果我打开wifi程序,则该功能不会触发。如果在程序运行时,我单击wifi,然后手机切换到移动数据,我立即登录:

D / MainActivity: loadPrefsFromDB: onDataChange
Run Code Online (Sandbox Code Playgroud)

如果我注销并再次打开wifi,该功能也会被触发。Firebase是否应该处理这种情况?还是我需要以某种方式刷新身份验证?

android firebase firebase-authentication firebase-realtime-database

5
推荐指数
1
解决办法
996
查看次数