代码之家  ›  专栏  ›  技术社区  ›  Al Walid Ashik

停止获取Firebase数据库引用的实时更新

  •  0
  • Al Walid Ashik  · 技术社区  · 8 年前

    我知道firebase数据库是一个实时数据库,但对于我的功能,我不想实时更新特定的数据库引用(低于引用)值。那么,有没有办法停止对firebase数据库引用进行实时更新?

    mUserDataRef = FirebaseDatabase.getInstance().getReference().child("users");
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Frank van Puffelen    8 年前

    您共享的代码只创建对数据库中某个位置的引用。它还没有开始获得实时更新。要开始获取实时更新,请使用 addValueEventListener addChildEventListener

    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文档中的这两页:

    推荐文章