停止在Firebase数据库参考上获取实时更新

时间:2018-09-15 13:20:52

标签: android firebase firebase-realtime-database

我知道firebase数据库是实时数据库,但是对于我的功能,我不想实时更新特定的数据库引用(低于引用)值。因此,有什么方法可以停止获取Firebase数据库参考的实时更新?

_themeData.textTheme.subhead

1 个答案:

答案 0 :(得分:0)

您共享的代码仅创建对数据库中某个位置的引用。它尚未开始获取实时更新。要开始获取实时更新,请在监听器上附加addValueEventListeneraddChildEventListener。后者的示例:

ChildEventListener childEventListener = new ChildEventListener() {
  @Override
  public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
    Log.d(TAG, "onChildAdded:" + dataSnapshot.getKey());
  }

  @Override
  public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
    Log.d(TAG, "onChildChanged:" + dataSnapshot.getKey());
  }

  @Override
  public void onChildRemoved(DataSnapshot dataSnapshot) {
    Log.d(TAG, "onChildRemoved:" + dataSnapshot.getKey());
  }

  @Override
  public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
    Log.d(TAG, "onChildMoved:" + dataSnapshot.getKey());
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    Log.w(TAG, "onCancelled", databaseError.toException());
  }
};
mUserDataRef.addChildEventListener(childEventListener);

这将接收数据更新,直到将其删除的侦听器为止。要remove the listener,请致电:

mUserDataRef.removeEventListener(childEventListener);

如果您只想获取一次数据,而不是接收连续更新,则可以致电addListenerForSingleValueEvent

mUserDataRef.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
        Log.d(TAG, "onDataChange:" + dataSnapshot.getKey());
    }
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    Log.w(TAG, "onCancelled", databaseError.toException());
  }
});

我强烈建议您在Firebase文档中研究以下两个页面: