का उपयोग कर मान लीजिए कि मैं एक flowable है कि आवेदन के विभिन्न भागों के बीच साझा किया करते बनाई निपटान के लिए की जरूरत है।मैं() प्रकाशक LiveDataReactiveStreams
प्रत्येक खंड में जहां मैं इसे देखना चाहता हूं, मैं लीक और क्रैश से बचने के लिए इसे LiveDataReactiveStreams.fromPublisher
के साथ लाइवडाटा में परिवर्तित करता हूं। अब मेरे पास एक लाइवडाटा है जो मेरे फ़्लोएबल को लपेटता है।
मैं तो LiveData मेरी ViewModel करने के लिए (ViewModelFactory में) गुजरती हैं। जहां तक मैं समझता हूं, मैं आगे बढ़ सकता हूं और लीक के बारे में चिंता किए बिना लाइवडाटा का उपयोग कर सकता हूं।
अब, लाइवडाटा को सीधे देखने के बजाय, मैं इसे वापस LiveDataReactiveStreams.toPublisher
और Flowable.fromPublisher
के साथ फ़्लोएबल में बदलने और इसके बजाय फ़्लोएबल की सदस्यता लेने के लिए प्रेरित हूं। यह अब एक फ्लोएबल है जो एक लाइवडाटा को लपेटता है जो एक फ्लोएबल
लपेटता है मेरा प्रश्न है: क्या मुझे इस फ़्लोबल के सब्सक्रिप्शन को निपटाने के बारे में चिंता करने की ज़रूरत है? मेरी आशा यह है कि लाइवडाटा "अवरोध" के रूप में कार्य करेगा, जो मेरे संदर्भ को रूट फ्लोबल पर वापस ले जाने के लिए रोक देगा, लेकिन मुझे इसके बारे में इतना यकीन नहीं है।
दूसरे शब्दों में:
- flowable एक एक वैश्विक संदर्भ
- प्रत्येक खंड में, एक LiveData बी जो टुकड़े की एक संपत्ति के रूप में सेट किया गया है में लपेटा जाता है में मौजूद है ViewModel
- जब सामान्य रूप से मैं LiveData निरीक्षण होगा बी, मैं बजाय flowable में लपेट सी
- मैं सी flowable और लौट आए डिस्पोजेबल
विचारों विल एक अप करने के लिए लीक सी में पहुँचा उपेक्षा जब टुकड़ा नष्ट हो जाता है की सदस्यता?
मैं समझता हूँ कि यह मेरे लिए सदस्यता समाप्त नहीं करता है, लेकिन मेरे सवाल यह है: यह वास्तव में रिसाव जब टुकड़ा नष्ट हो जाता है जाएगा? यदि हां, तो यह रिसाव कहां/कैसे होता है? –
यह प्रकाशक को आपकी सदस्यता रिसाव करेगा। – tynn
मैं इतनी दूर तुम्हारे साथ हूँ, लेकिन प्रकाशक नहीं होगा जी सी: (सदस्यता के साथ) एड जब टुकड़ा जीसी है: एड? जहां तक मैं देख सकता हूँ, यहाँ बनाया सभी संदर्भों को गोल हैं, जो हो रहा –