2017-09-23 137 views
0

即使在主機listRef的父代activity已被銷燬之後,addListenerForSingleValueEvent會被解僱嗎?Firebase Base偵聽器行爲

DatabaseReference listRef = FirebaseDatabase.getInstance().getReference(Constants.Client + "/"+Constants.branch); 
      listRef.keepSynced(true); 
      listRef.addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 



       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 

回答

1

Firebase數據庫偵聽器未與活動或其他上下文關聯。如果您不希望它們在活動被銷燬後觸發,則應該在活動的正確生命週期方法中刪除偵聽器。

另見:

+0

爲什麼不與上下文關聯? doc說keepSynced真正加載到RAM中,那麼實例會在RAM中保留多久? –

+2

調用'ref.keepSynced(true)'本質上意味着Firebase會向該位置添加一個空的偵聽器,以便在應用程序處於活動狀態時數據在內存中保持最新狀態。一旦應用程序退出,或者當您調用'ref.keepSynced(false)'*和*對同一位置的所有其他引用已被刪除,數據將被刪除。 –