को अनधिकृत करने के लिए जब मेरे पास सेंसर मैनेजर के लिए unregisterListener
के बारे में मूल प्रश्न है। इसे onStop()
या onDestroy()
में किया जाना चाहिए।एंड्रॉइड: श्रोता - ऑनस्टॉप() या ऑनस्ट्रोय()
USECASE:
मैं प्रारंभ बटन के क्लिक पर accelorometer
रिकॉर्ड और बंद करो जब उपयोगकर्ता क्लिक बटन बंद करना चाहते हैं। डेटा की आवृत्ति हर मिनट है। तो मैंने timer
शुरू किया है।
लेकिन यह समस्या हर बार orientation
एंड्रॉइड आर्किटेक्चर के अनुसार बदलती है, onStop()
कॉल किया जाता है। onStop()
में मैं टाइमर को रद्द कर रहा हूं और श्रोता को अपंजीकृत कर रहा हूं।
फिर से अगर मैं onResume()
में टाइमर/रजिस्टर श्रोता शुरू करता हूं तो आवृत्ति 1 मिनट तक नहीं रहेगी और डेटा को स्टार्ट बटन दबाए बिना उपयोगकर्ता रिकॉर्ड किया जाएगा।
क्या कोई इस समस्या को हल करने में मेरी सहायता कर सकता है।
धन्यवाद।
मैं एंड्रॉयड को समझने (यह here के बारे में और अधिक पढ़ें) 'onDestroy' के लिए प्रलेखन का अर्थ यह है कि आपको डेटा को * सहेजना नहीं चाहिए, क्योंकि इसे कहने से पहले प्रक्रिया को मार दिया जा सकता है। हालांकि उस स्थिति में, कोई भी श्रोताओं सेंसर प्रबंधक के लिए पंजीकृत होगा। इसमें क्या नुकसान है? –
ध्यान दें, 'ऑनस्टॉप' भी कॉल करने की गारंटी नहीं है। –
ऑन पॉज़ केवल एक ही गारंटी है। मैंने ऐसे उदाहरण देखे हैं जहां ऑनटॉप को नहीं कहा जाता है, इसलिए ऐप पर वापस जाने पर एक नया खंड उदाहरण चालू होगा, और श्रोता को लीक किया जाता है (जब तक आप स्ट्रिंग टैग का उपयोग करके श्रोताओं को पंजीकृत नहीं करते हैं, और नया खंड पुराने श्रोता को बदल देता है) – James