अगर मैं वही श्रोता वस्तु जोड़ता हूं

private ValueEventListener dataChangedListener = new ValueEventListener() ...

        mQery.addValueEventListener(dataChangedListener);
        mQery.addValueEventListener(dataChangedListener);

यह वैसा ही होगा जैसे मैंने इसे एक बार जोड़ा? और अगर मैं इसे हटाना चाहता हूं तो मुझे बस कॉल करना चाहिए

        mQery.removeEventListener(dataChangedListener);

या नहीं?

2
Evgeniy 22 सितंबर 2017, 13:53

2 जवाब

सबसे बढ़िया उत्तर

डेटाबेस में कुछ डेटा को अपडेट करके और यह देख कर कि आपका onDataChanged बुलाया जाता है या नहीं।

इस बारे में कि क्या यह एक बार जोड़ने जैसा ही होगा: मेरा एक ही प्रश्न था, इसलिए मैंने फायरबेस की जाँच की स्रोत। जहां तक ​​​​मैं समझता हूं (मैं किसी भी तरह से इसमें कोई विशेषज्ञ नहीं हूं), फायरबेस श्रोता सूची में एक नई वस्तु जोड़ता है लेकिन यह उसी श्रोता को इंगित करता है जो पहले जोड़ा गया था।

आप स्रोत स्वयं।

संपादित करें: स्पष्टीकरण के लिए, मैं कुछ स्क्रीनशॉट जोड़ूंगा ...

यह तब होता है जब मैं एक ही बाल श्रोता को दो बार पंजीकृत करता हूं। onChildAdded को दो बार कॉल किया जाता है और दूध 2x के साथ सूची को पॉप्युलेट करता है।

This is what happens if I register the same child listener twice

1
Sir Barksalot 26 नवम्बर 2017, 04:14

नहीं, यह वही नहीं होगा। यदि आपके पास आपके फायरबेस डेटाबेस में एक ही स्थान की ओर इशारा करते हुए कई संदर्भ हैं, और आपके पास उन सभी संदर्भों पर श्रोता हैं, तो उस स्थान पर डेटा में कोई भी परिवर्तन सभी श्रोताओं को ट्रिगर करेगा।

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

1
Alex Mamo 22 सितंबर 2017, 13:58