FirebaseUI-Android RecyclerView में स्नैपशॉट श्रोताओं को जोड़ना और हटाना
FirebaseUI-Android वास्तविक समय डेटा के साथ RecyclerViews को पॉप्युलेट करने का एक सुविधाजनक तरीका प्रदान करता है आग्नेयास्त्र की दुकान। हालाँकि, यह समझना महत्वपूर्ण है कि संसाधन लीक से बचने के लिए स्नैपशॉट श्रोताओं को ठीक से कैसे जोड़ा और हटाया जाए। RecyclerView में प्रत्येक आइटम। पॉप्युलेटव्यूहोल्डर विधि में, आप वर्तमान आइटम के लिए दस्तावेज़ संदर्भ को पुनः प्राप्त करने के लिए getRef(i) विधि का उपयोग कर सकते हैं।
संदर्भ में परिवर्तनों को सुनने के लिए, आप addSnapshotListener(EventListener) विधि का उपयोग कर सकते हैं। यह विधि एक इवेंट लिस्टनर को एक तर्क के रूप में लेती है, जिसे संदर्भ का स्नैपशॉट बदलने पर कॉल किया जाएगा।
स्नैपशॉट श्रोता को हटानाश्रोता को हटाना महत्वपूर्ण है जब इसकी आवश्यकता नहीं रह जाती. ऐसा न करने पर मेमोरी लीक हो जाएगी. आप लिसनररजिस्ट्रेशन ऑब्जेक्ट पर रिमूव() विधि का उपयोग करके श्रोता को हटा सकते हैं। FirebaseRecyclerAdapter की पॉप्युलेटव्यूहोल्डर विधि में श्रोता:
@Override
संरक्षित शून्य पॉप्युलेटव्यूहोल्डर(अंतिम कन्वव्यूहोल्डर कन्वव्यूहोल्डर, अंतिम कन्व कन्व, इंट आई) {
अंतिम स्ट्रिंग list_user_id = getRef(i).getKey();
अंतिम दस्तावेज़ संदर्भ docRef = db.collection('cities').document(list_user_id);
श्रोता पंजीकरण श्रोता पंजीकरण = शून्य;
यदि (श्रोता पंजीकरण == शून्य) {
श्रोता पंजीकरण = docRef.addSnapshotListener(नया इवेंटListener
श्रोता को हटाने के लिए जब गतिविधि अब दिखाई नहीं दे रही है, आप अपनी गतिविधि में ऑनस्टॉप() विधि को ओवरराइड कर सकते हैं और श्रोता पंजीकरण पर रिमूव() विधि को कॉल कर सकते हैं।
@Override संरक्षित शून्य ऑनस्टॉप() { सुपर.ऑनस्टॉप(); यदि (श्रोता पंजीकरण! = शून्य) { श्रोता पंजीकरण.निकालें(); } }
@Override protected void populateViewHolder(final ConvViewHolder convViewHolder, final Conv conv, int i) { final String list_user_id = getRef(i).getKey(); final DocumentReference docRef = db.collection("cities").document(list_user_id); ListenerRegistration listenerRegistration = null; if (listenerRegistration == null) { listenerRegistration = docRef.addSnapshotListener(new EventListener() { @Override public void onEvent(@Nullable DocumentSnapshot snapshot, @Nullable FirebaseFirestoreException e) { if (e != null) { Log.w(TAG, "Listen failed.", e); return; } if (snapshot != null && snapshot.exists()) { Log.d(TAG, "Current data: " snapshot.getData()); } else { Log.d(TAG, "Current data: null"); } } }); } }
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3