首页 文章

Firebase实时数据库检索数据问题[重复]

提问于
浏览
-2

这个问题在这里已有答案:

我正在使用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 回答

  • 1

    看到你的代码我可以说没有错误 . 要解决此问题,只需注释以下代码行:

    database.setPersistenceEnabled(true);
    ref.keepSynced(true);
    

    而你的问题将得到解决 . 您的数据将首次显示 .

相关问题