आपका क्या मतलब है, onCreate()
क्यों नहीं कहा जाता है?
सरल उत्तर: स्क्रीन बंद होने पर आपकी गतिविधि को नष्ट नहीं किया जा रहा है, इसलिए onCreate()
के लिए फिर से कॉल करने का कोई कारण नहीं है।
जब फोन की स्क्रीन बंद हो जाती है, तो गतिविधि के onPause()
कॉलबैक को कॉल किया जाता है, इसके बाद onStop()
होता है। हालांकि, सिर्फ onStop()
तक पहुंचने का मतलब यह नहीं है कि यह हमेशा onDestroy()
तक पहुंच जाएगा। कम से कम मेरी समझ के लिए, एंड्रॉइड ओएस जितना संभव हो उतना मेमोरी इस्तेमाल करने का प्रयास करता है ताकि ऐप तेजी से लोड हो जाए, आदि (यह एक वास्तविक सरलीकरण है, लेकिन मुझे विश्वास है कि यह सामान्य विचार है)। इसका मतलब है कि जब स्क्रीन बंद हो जाती है (कम से कम शुरुआत में) आपकी गतिविधि अभी भी स्मृति में मौजूद है। केवल तभी जब सिस्टम को वास्तव में उन संसाधनों की आवश्यकता होती है जो आपकी गतिविधि को पकड़ती हैं, तो यह आपकी गतिविधि के onDestroy()
पर कॉल करेगी। यही कारण है कि जब आप स्क्रीन बंद करते हैं तो आपका बटन क्लिक श्रोता अभी भी काम करता है। आपकी गतिविधि अभी भी स्मृति में मौजूद है, जिसका अर्थ है कि आपका बटन श्रोता अभी भी पंजीकृत है।
मुझे लगता है कि नींद मोड को इंगित करना और स्क्रीन को बंद करना एक ही बात नहीं है। जब आप स्क्रीन बंद करते हैं, तो यह तुरंत नींद मोड में जा सकता है या नहीं। जब स्क्रीन बंद हो जाती है लेकिन यह अभी तक नींद मोड में नहीं जाती है, तो सीपीयू अभी भी काम कर रहा है और सेवा अभी भी चल रही है। जब फोन नींद मोड में जाता है तो यह सीपीयू को कम करता है, अनिवार्य रूप से सभी प्रक्रियाओं को "ठंडा" करता है, और नतीजतन सभी services
भी। Wakelocks का उपयोग फोन को नींद मोड में जाने से रोकता है, यही वजह है कि फोन की स्क्रीन एक विस्तृत अवधि के लिए बंद होने पर सेवाएं अभी भी चलेंगी। यदि आपने इसे अभी तक नहीं पढ़ा है, तो Service
reference में कुछ अच्छी जानकारी है। यह अपने जीवन चक्र पर चर्चा करता है और कैसे एंड्रॉइड इसके स्मृति उपयोग को प्राथमिकता देता है।
आखिरकार आप क्या चाहते हैं! –
निश्चित रूप से, यह वही है जो मैं चाहता हूं लेकिन मेरा सवाल यह है कि क्या हो रहा है। संचालकों और धागे नष्ट नहीं कर रहे हैं, मैं केवल यह मान सकते हैं कि एंड्रॉयड (या हार्डवेयर) "रोक" सभी प्रक्रियाओं का राज्य (सिवाय एक AlarmManager की तरह है) और फिर इस राज्य "को रोकना बंद करके" डिवाइस के लिए आता है के लिए सक्षम है नींद मोड से बाहर। मुझे लगता है कि बैटरी को बचाने के लिए डिवाइस के आर्किटेक्चर द्वारा यह केवल संभव है। वास्तव में दिलचस्प क्या है कि यदि यह सच है, नींद मोड से बाहर आने पर पृष्ठभूमि सेवाएं क्यों जीवित नहीं रहती हैं। वे वास्तव में नींद मोड के दौरान मारे जा सकते हैं और कर सकते हैं। – AndroidDev