2016-11-23 10 views

उत्तर

8

वे लगभग एक ही बात करते हैं, हालांकि कभी-कभी ChildEventListener अधिक लचीला होना कर सकते हैं: ChildEventListener साथ आप ValueEventListener केवल onDataChanged प्रदान करता है, जबकि 4 क्रिया (onChildAdded, onChildChanged, onChildMoved और onChildRemoved) के लिए अलग व्यवहार निर्दिष्ट कर सकते हैं,।

इसके अलावा चाइल्डवेन्टलिस्टर बच्चे के स्थान पर डेटा स्नैपशॉट्स (डेटा की अपरिवर्तनीय प्रतियां) प्रदान करता है जबकि ValueEventListener पूरे नोड का डेटा स्नैपशॉट प्रदान करता है।

+0

अपरिवर्तनीय के डेटा स्नैपशॉट भी नहीं है? तो केवल अंतर यह है कि ChildEventListener के पास 4 विशिष्ट विधियां हैं जबकि ValueEventListener की 1 व्यापक विधि (कोई भी परिवर्तन) – Gil

+0

हाँ है। डेटा स्नैपशॉट हमेशा अपरिवर्तनीय है। और तुम ठीक कह रहे हैं - आप 1 व्यापक प्रणाली की जरुरत यदि आप बल्कि ValueEventListener का उपयोग करेंगे। और ChildEventListener अगर आप जोड़ना/परिवर्तन/स्थानांतरित/बच्चे वस्तुओं के हटाने संयोजित करना चाहते थे कुछ कार्यक्षमता है किया जाना चाहिए। –

+0

इसके अलावा, इस सवाल का जवाब http://stackoverflow.com/a/34532739/2915480 "Firebase घटनाक्रम गारंटी" के दिलचस्प विषय से संबंधित है। यही कारण है कि, फिर से, साबित करता है ValueEventListener के बारे में अपने शब्दों ChildEventLIstener की तुलना में अधिक व्यापक हो। –

5

ValueEventListener निकाल दिया जाता है केवल जब कि विशिष्ट मूल्य परिवर्तन, लेकिन ChildEventListener कि नोड के न केवल मूल्य सुनता है, लेकिन यह भी पेड़ के सभी बच्चे नोड्स के लिए। कहो, आपके पास नोड है, जिसमें एक बच्चा है। जब यह नोड बदलता है तो ValueEventListener ट्रिगर किया जाएगा, लेकिन जब भी बाल मूल्य बदलते हैं तो ChildEventListener भी ट्रिगर किया जाएगा। दस्तावेज़ीकरण कहता है कि आपको सावधानी के साथ चाइल्डएवेंट लिस्टनर का उपयोग करना चाहिए - इसे कई बार ट्रिगर किया जा सकता है।

+0

धन्यवाद लेकिन मूल्य ईवेंट श्रोता हर बार एक नया स्नैपशॉट प्राप्त करता है जब कोई बदलाव सही होता है? और आप पूरे डेटाबेस होने के लिए दायरे को कॉन्फ़िगर कर सकते हैं जो प्रभावी ढंग से बच्चे की सूची के समान काम करता है। यह मेरा भ्रम है – Gil

संबंधित मुद्दे