2013-07-25 6 views
18

एंड्रॉइड एप्लिकेशन क्लास में आप ActivityLifecycleCallbacks पंजीकरण/पंजीकरण रद्द कर सकते हैं, जो आपको अपने आवेदन में गतिविधि जीवन चक्र घटनाओं को एक ही स्थान पर (यदि आप चाहें) पर नजर रखने की अनुमति देते हैं।गतिविधि जीवन चक्र कॉलबैक को अपंजीकृत करने का सही तरीका क्या है?

unregisterActivityLifecycleCallbacks पर कॉल करने के लिए उचित जगह कहां है? मैं onCreate में पंजीकरण कर रहा हूँ, और सोच रहा था कि onTerminate सिर्फ विधि के नाम से उचित स्थान होगा, लेकिन डॉक्स onTerminate() के लिए कहते हैं:

इस विधि नकल करते प्रक्रिया के वातावरण में उपयोग के लिए है । यह कभी भी उत्पादन एंड्रॉइड डिवाइस पर नहीं बुलाया जाएगा, जहां प्रक्रियाओं को आसानी से मार कर हटा दी जाती है; कोई उपयोगकर्ता कोड (इस कॉलबैक सहित) ऐसा करने पर निष्पादित किया गया है।

मुझे एप्लिकेशन क्लास में कोई अन्य तरीका नहीं दिखता है जहां 'शटडाउन' प्रकार कॉलबैक बनाया जाता है। क्या आपको पंजीकरण रद्द करने की भी आवश्यकता है?

+0

मैं वास्तव में उत्सुक हूं कि आप क्या हासिल करने की कोशिश कर रहे हैं। अपंजीकृत के संबंध में, आपको तब से आवश्यकता नहीं होगी जब आपकी एप्लिकेशन कक्षा मर रही है, आपकी प्रक्रिया मर रही है, इसलिए आप सुपर() कॉल के बाद, अनियंत्रित रूप से पंजीकरण करेंगे, आपकी प्रक्रिया से पहले कुछ माइक्रोसेकंड मर जाएंगे। मुझे लगता है कि अपंजीकृत का उद्देश्य आपको रन टाइम पर व्यवहार बदलने में सक्षम बनाना है। – Simon

उत्तर

18

Simon इस बारे में सही था। registerActivityLifecycleCallbacks को unregisterActivityLifecycleCallbacks पर मिलान करने की आवश्यकता नहीं है। जैसा कि this SO question में वर्णित है, आप तब नहीं देख सकते जब आपका आवेदन मारे जा रहा है। तो आपके कॉलबैक को अनधिकृत करने के लिए कोई "तार्किक" स्थान नहीं है। और यहां तक ​​कि अगर Application उदाहरण के बाद Activity कार्रवाई हो जाती है, और Application की हत्या mActivityLifecycleCallbacks सूची को मार देती है जो आपके कॉलबैक का संदर्भ रखती है।

टी एल; डॉ - unregisterActivityLifecycleCallbacks बुला के बारे में चिंता मत करो, यह केवल वहाँ अगर आप अपने Application के सामान्य जीवन चक्र के दौरान Activity कार्रवाइयों पर नज़र बंद करना चाहते है।

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