2016-11-16 95 views
3

如果我以下列方式使用監聽器的活動:Firebase偵聽器需要始終移除?

// Read from the database 
myRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // This method is called once with the initial value and again 
     // whenever data at this location is updated. 
     String value = dataSnapshot.getValue(String.class); 
     Log.d(TAG, "Value is: " + value); 
    } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     // Failed to read value 
     Log.w(TAG, "Failed to read value.", error.toException()); 
    } 
}); 

安裝懸掛annonymous監聽器(事件不附加到變量), 我還需要將其刪除?

*我設置的onStart(),需要它來運行,直到onStop()/onDestroy()

什麼時候nessecery去除聽衆?

+0

如果您只有一個EventListener比您不必刪除,它會自動刪除,因爲偵聽器下載列表中的數據。 –

回答

1

如果您只希望偵聽器在活動處於活動狀態時工作,則可以通過調用Firebase數據庫引用上的removeEventListener()方法來分離偵聽器。如果您將偵聽器附加在onStart()中,則應該分離onStop()。

@Override 
protected void onStop() { 
    super.onStop(); 

    //... 
    myRef.removeEventListener(); 
}