मैं फायरबेस डेटाबेस से डेटा प्राप्त करने के लिए FirebaseRecyclerAdapter का उपयोग कर रहा हूं लेकिन विभिन्न लेआउट में मैं addValueEventListener और addListenerForSingleValueEvent का उपयोग कर रहा हूं और मुझे पता है कि लेआउट छोड़ने के बाद addValueEventListener को हटा दिया जाना चाहिए (ऑनडेस्ट्रॉय () में)। तो मेरा सवाल यह है कि फायरबेस रीसाइक्लर एडाप्टर से श्रोता को कैसे रोकें, जब मैं उस लेआउट को छोड़ दूं जिसमें फायरबेस रीसाइक्लर एडाप्टर .. ??

0
Denial Coper 2 मार्च 2019, 15:41

1 उत्तर

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

यदि आप फायरबेस-यूआई के एडॉप्टर का उपयोग कर रहे हैं, तो आप adapter.stopListening() पर कॉल करके, आमतौर पर अपनी गतिविधि की onStop पद्धति में, परिवर्तनों को सुनने से रोक सकते हैं।

यदि आप अपने स्वयं के श्रोताओं को addValueEventListener या addChildEventListener के साथ जोड़ रहे हैं, तो आपको वास्तव में उन्हें एक बार हटाने की आवश्यकता होगी जब उनकी आवश्यकता नहीं रह जाएगी। ऐसा करने के लिए आपको अपने द्वारा जोड़े गए श्रोताओं का ट्रैक रखना होगा और फिर removeEventListener क्वेरी या संदर्भ पर..

तो यदि आपने श्रोता को इसके साथ जोड़ा है:

ValueEventListener listener = new ValueEventListener() {
   ...
});
ref.addValueEventListener(listener);

फिर आप इसे हटा सकते हैं (उदाहरण के लिए onStop में):

remove.removeEventListener(listener);

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

0
Alex Mamo 3 मार्च 2019, 10:20