2016-10-31 13 views
5

मुझे आश्चर्य है कि View.postDelayed पर चलाया जाने वाला रननेबल माता-पिता से दृश्य अलग होने पर स्वचालित रूप से हटा दिया जाएगा।एंड्रॉइड View.postDelayed रिसाव संदर्भ करता है?

मैंने View वर्ग के स्रोत में देखा और इसे Handler पर पोस्ट किया गया है जो यह बाहर हो जाता है। लेकिन उस हैंडलर का जीवन चक्र स्पष्ट नहीं है।

क्या किसी को जवाब पता है?

+0

मुझे लगता है कि आप इसे बहुत देर देरी और नष्ट कर देकर इसका परीक्षण कर सकते हैं वह काम। –

+0

हां, यह रिसाव होगा, क्या आप 'व्यू # निकालें कॉलबैक' का उपयोग नहीं कर सकते? – pskink

+0

यह विकल्प है, लेकिन मैं सोच रहा था कि Android खुद को हटाने के लिए एंड्रॉइड चालाक हो सकता है –

उत्तर

2

मुझे आश्चर्य है कि runnable View.postDelayed को पारित कर दिया है, तो जब दृश्य माता-पिता से अलग है स्वचालित रूप से हटा दिया हो जाएगा।

रन विधि निष्पादित करने के बाद यह समाप्त हो जाएगा। यदि आपके पास एक अनंत लूप है, तो इसे कभी नहीं हटाया जाएगा और इसलिए, आप दृश्य को रिसाव करेंगे, और उस गतिविधि का उपयोग करने वाली गतिविधि

+0

मान लीजिए कि यह लूप नहीं है लेकिन अंतराल में देरी बड़ी है। चूंकि इसे निष्पादित नहीं किया गया है, फिर भी यह सभी संदर्भों को –

+0

रखता है जो इस मामले में लागू होता है। देरी से बाहर निकलने तक और चलने योग्य निष्पादित होने तक आप स्मृति को रिसाव करेंगे। केवल तभी सभी संसाधनों को मुक्त किया जा सकता है – Blackbelt

+0

यह बहुत बुरा है कि दृश्य अलग-अलग पर 'कॉलबैक' साफ़ नहीं करता है – Jozua

संबंधित मुद्दे