मैंने उचित मात्रा में शोध किया और मुझे जिस उत्तर की आवश्यकता है उसे नहीं मिला।एंड्रॉइड - फायरबेस - क्या मुझे हर एक श्रोता को हटाने की ज़रूरत है?
मुझे क्या मालूम: जब मैं एक डेटाबेस संदर्भ के लिए एक ValueEventListener देते हैं, मुझे लगता है मैं बाद में इसे हटाने के लिए (कि बाहर कुछ बड़े पैमाने पर स्मृति रिसाव के साथ अब मुश्किल तरीके खोजने की जरूरत है पता
क्या मैं। पता नहीं: मैं भी अन्य सभी श्रोताओं को अलग करने की आवश्यकता है (यह Firebase डाटाबेस, भंडारण, और प्रमाणीकरण शामिल करने के लिए, तीन API मैं उपयोग कर रहा हूँ है)
उदाहरण:
UploadTask uploadTask = ref.putFile(uploadFile);
uploadTask.addOnFailureListener(new OnFailureListener() {
//@Override code here
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TakeSnapshot>() {
//@Override code here
}).addOnProgressListner(new OnProgressListner<UploadTask.TakeSnapshot>() {
//@Override code here
};
मुझे लगता है कि मुझे आपके मतलब का बिंदु दिखाने के लिए पर्याप्त है। इस प्रकार मेरा वास्तविक कोड वर्तमान में संरचित है।
सवाल:
- मैं सिर्फ मामले गतिविधि समाप्त होता है में उन श्रोताओं के सभी दूर करने के लिए (सिस्टम निर्णय, फोन मर जाता है, जो कुछ भी) से पहले कि कॉलबैक होता है की जरूरत है?
- मैं उन्हें किसी भी तरह ऊपर बंडल और उन्हें तीनों ही बार में समाप्त क्योंकि मैं अपने कोड में इनमें से 30 की तरह है और वास्तव में चर के इन सभी श्रोताओं आवंटित करने के लिए आदेश में यह सभी के पुनर्गठन की तरह नहीं लग रहा है सिर्फ इसलिए मैं उन्हें "हटाएंब्लैब्लूब्लहब्लैला लिस्टनर (श्रोता बनाने योग्य)" में और अधिक पास कर सकता हूं।
- थोड़ा सा विषय बंद करें, लेकिन, मैं अपने सभी कोड से ऑनस्टार्ट पर जाने के लिए बहुत आलसी हूं ... इन सभी श्रोताओं को हटाने, चीजों को खत्म करने, कॉल खत्म करने() (या जो भी हो) को हटाने के लिए मेरे लिए बुरा अभ्यास है यह है कि एक गतिविधि को मार देता है, हालांकि मुझे लगता है कि इसकी गारंटी नहीं है) और केवल स्क्रैच से गतिविधि को फिर से बनाएं? यह एक छोटा सा ऐप है इसलिए गतिविधि को फिर से बनाने का ओवरहेड कोई बड़ी बात नहीं है। सिर्फ "सही" क्या उत्सुक है।
मुझे लगता है कि यह खराब योजना और ज्ञान की कमी का परिणाम है (मैं केवल मज़े के लिए प्रोग्राम, दुर्भाग्य से नौकरी के लिए नहीं) इसलिए यदि मुझे कठिन मार्ग लेना है तो मुझे लगता है कि यह एक सीखने का अनुभव है, है ?
पर उलझन में हैं। आपके द्वारा दिखाया गया उदाहरण कोड फायरबेस स्टोरेज के लिए एक प्रगति श्रोता है। लेकिन आपका पाठ डेटाबेस के बारे में स्पष्ट रूप से है। आपको किसके साथ समस्या है? –
भ्रम फ्रैंक के बारे में क्षमा करें। मैं और अधिक स्पष्ट हो सकता था। मैं फायरबेस से दोनों एपीआई (डीबी और स्टोरेज) का उपयोग कर रहा हूं और दोनों में श्रोताओं का उपयोग कर रहा हूं। मेरा सवाल वास्तव में मुझे लगता है कि दोनों पर लागू करने के लिए था। मुझे लगता है कि सामान्य रूप से फायरबेस श्रोताओं और जब वे करते हैं और अलग/हटाए जाने की आवश्यकता नहीं होती है। उदाहरण के लिए, क्या कुछ एफबी श्रोताओं हैं जो गतिविधि को बाहर ले जाने पर स्वयं का ख्याल रखते हैं या क्या प्रत्येक एकल श्रोता (डीबी और स्टोरेज) पर रोकें/रोकें/नष्ट करें आदि – Ryan