这个问题在这里已有答案:
我正在使用Firebase实时数据库来存储和检索我的Android应用程序的数据 . 在我的主屏幕上,我实现了 addListenerForSingleValueEvent 用于从我的数据库中读取 . 我的数据库有一个值,例如:
"version" : 455
从我的叶子“版本”收听后,我正确地在我的应用程序中检索值“455” . 现在我执行两个步骤:杀死应用程序 . 手动将firebase控制台中的叶子更新为467 .
之后,当我启动应用程序时,我第一次得到相同的旧值“455”,在第二次启动时,我得到更新的值“467” .
这是firebase数据库的正确行为吗?无论如何,我可以从第一个应用程序启动获得更新的 Value ?
EDIT : 添加代码
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref= database.getReference();
database.setPersistenceEnabled(true);
ref.keepSynced(true);
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot != null) {
long version = (long) dataSnapshot.child("version").getValue();
// This is the value which doesn't update for the first time.
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
P.S. :我已经使用 ref.keepSynced(true); ,仍然是手动更新后第一次给出旧值 .
1 回答
看到你的代码我可以说没有错误 . 要解决此问题,只需注释以下代码行:
而你的问题将得到解决 . 您的数据将首次显示 .