0
新しい値はfirebaseデータベースに設定されますが(Firebaseコンソールでチェックされます)、query datasnapshotは古い値を取得します。On firebaseデータベースへの照会datasnapshotは古い値を取得します
query.removeEventListener(this);
持続性が有効になっているaddValueEventListener最初のデータをキャッシュして戻り、次回の新規データ:
final Query query = FirebaseDatabase.getInstance().getReference(DEVICES_TABLE).orderByChild("deviceUniqueId").equalTo(deviceUniqueId);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Device device;
if (dataSnapshot.getChildren().iterator().hasNext()) {
device = dataSnapshot.getChildren().iterator().next().getValue(Device.class);
if (device.getIsEnable() == 1) {
loginView.onError(loginView.getContext().getString(R.string.error_device_disable));
doCyberoamLogout(mUserName, location);
} else {
switch (mMessage) {
case CYBEROAM_LOGIN_SUCCESS_MESSAGE:
//login successful
Toast.makeText(activity, "Cyberoam login success.", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getEmailUsingCyberoamId(mUserName, mPasswod);
}
}, 5000);
break;
case CYBEROAM_WRONG_PASSWORD:
signOutFromFirebase();
loginView.onError(CYBEROAM_WRONG_PASSWORD);
break;
case CYBEROAM_MAX_LOGIN_LIMIT:
signOutFromFirebase();
loginView.onError(loginView.getContext().getResources().getString(R.string.prompt_max_login_limit));
break;
default:
signOutFromFirebase();
loginView.onError(loginView.getContext().getResources().getString(R.string.action_cyberoam_login_failed));
break;
}
}
query.removeEventListener(this);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
コードを投稿できますか? –
更新されたデータを取得していますか?キャッシュされたdb情報ではなく、新しいデータをロードするための適切なインターネット接続がある前にではない –
永続性が有効になっていますか? – Pipiks