2016-11-23 15 views

cevap

8

Onlar hemen hemen aynı şeyi yaparlar.

Ayrıca, ChildEventListener, ChildEventListener bir tüm düğümün DataSnapshot'ını sağlarken ChildSventListener, çocuğun konumuna DataSnapshots (verilerin değişmez kopyaları) sağlar.

+0

aynı zamanda bir DataSnapshot immutable değil mi? Dolayısıyla tek fark, ChildEventListener'ın 4 özel yönteme sahip olması, ValueEventListener'ın ise 1 geniş yöntem (herhangi bir değişiklik) – Gil

+0

yep olmasıdır. DataSnapshot her zaman değişmez. Ve haklısınız - eğer 1 geniş yönteme ihtiyacınız varsa, ValueEventListener'ı kullanmayı tercih edersiniz. Alt öğeler eklemek/değiştirmek/taşımak/kaldırmak için bazı işlevleriniz varsa, ChildEventListener kullanılmalıdır. –

+0

Ayrıca, bu yanıt http://stackoverflow.com/a/34532739/2915480 "Firebase Events Guarantee" ile ilgili ilginç bir konuyla ilgilidir. Bu yine, ValueEventListener ile ilgili sözlerinizi ChildEventLIstener'den daha geniştir. –

5

ValueEventListener yalnızca bu belirli değer değiştiğinde tetiklenir, ancak ChildEventListener yalnızca bu düğümün değerini değil, aynı zamanda tüm ağaç düğümleri için de dinler. Söyle, bir çocuğunuz olan düğümünüz var. Bu düğüm değiştiğinde ValueEventListener tetiklenecek, ancak ChildEventListener da çocuk değerleri de değiştirildiği zaman tetiklenecektir. Dokümantasyon, ChildEventListener'ı dikkatli kullanmanız gerektiğini söylüyor - çok kez tetiklenebilir. ValueEventListener sadece onDataChanged sağlarken size, 4 eylemler (onChildAdded, onChildChanged, onChildMoved ve onChildRemoved) için farklı bir davranış belirtebilirsiniz ChildEventListener ile: ChildEventListener bazen daha esnek olabilir gerçi

+0

Teşekkürler, ancak değer olay dinleyicisi her defasında bir değişiklik olduğunda yeni bir anlık görüntü alıyor? Ve kapsamı, childeventlistener ile aynı şeyi etkin bir şekilde yapan tüm veritabanı olacak şekilde yapılandırabilirsiniz. Bu benim kafa karışıklığım – Gil

İlgili konular