एंड्रॉइड फोन में "होम" बटन दबाने पर एक रनिंग प्रोग्राम का क्या होता है?


27

एक बात मुझे याद आती है। ऐसा लगता है कि अगर मैं एंड्रॉइड पर कुछ प्रोग्राम का उपयोग करता हूं और "होम" बटन दबाता हूं तो मैं होम स्क्रीन को देखता हूं और प्रोग्राम को फिर से चला सकता हूं और उस प्रोग्राम को उसी स्थिति में देख सकता हूं जैसे वह पहले था - इसलिए ऐसा लगता है कि प्रोग्राम पूरी तरह से पुनरारंभ नहीं हुआ है, बस निलंबित और फिर से शुरू किया गया।

फिर भी यह एयर कंट्रोल गेम के साथ लगातार नहीं लगता है। कभी-कभी जब मैं एयर कंट्रोल खेल रहा होता हूं और "होम" और बाद में फिर से एयर कंट्रोल दबाता हूं - इसे रोका जाता है (जैसे कि मैंने "पॉज" बटन दबाया) और मैं गेम को फिर से शुरू कर सकता हूं। कभी-कभी वही खेल को छोड़ने और नए सिरे से एयर कंट्रोल की ओर जाता है।

तो ऐसा लगता है कि मुझे कुछ समझ नहीं आ रहा है।

यहाँ क्या सौदा है? जब एक कार्यक्रम "घर" दबाया जाता है तो क्या होता है? क्या यह चलता रहता है या यह क्या करता है?


मुझे शक है कि होम बटन दबाने से हाई पावर ड्रेन होता है।
फ्लो

जवाबों:


12

Homeबैकग्राउंड में चल रहे अपने ऐप को छोड़ते हुए, आपको ऐप से होम स्क्रीन पर स्विच दबाते हुए । यह एक विंडोज़ पीसी पर विंडोज़ के बीच स्विच करने जैसा है।

सिवाय इसके कि जब आपका फोन मेमोरी जैसे संसाधनों पर कम चल रहा हो, तो यह उन ऐप्स को बंद करना शुरू कर देगा जो पृष्ठभूमि में चल रहे हैं, ताकि आपके फोन में आपके पास पर्याप्त संसाधन हैं जो आप अभी करने की कोशिश कर रहे हैं। गेम अक्सर पहले ऐप्स के बीच होते हैं जो फोन को संसाधनों को बचाने के लिए "मार" देंगे क्योंकि वे अक्सर अन्य ऐप की तुलना में बहुत अधिक मेमोरी और सीपीयू का उपयोग करते हैं। यही कारण है कि कभी-कभी आपका गेम अभी भी रुका हुआ है, और कभी-कभी एंड्रॉइड ने इसे आपके लिए बंद कर दिया है।

Backबटन करीब क्षुधा इतना है कि वे वास्तव में बंद हो जाती हैं करने के लिए तरीका है।

यह भी देखें कि एंड्रॉइड में ऐप्स बंद करने का सही तरीका क्या है?


26

Android विकास दस्तावेज़ कार्य और बैक स्टैक वास्तव में इस सुंदर अच्छी तरह से शामिल किया गया है। एक प्रासंगिक अंश:

एक कार्य एक सामंजस्यपूर्ण इकाई है जो उपयोगकर्ताओं को एक नया कार्य शुरू करने या होम की के माध्यम से होम स्क्रीन पर जाने पर "पृष्ठभूमि" पर जा सकती है। पृष्ठभूमि में, कार्य में सभी गतिविधियों को रोक दिया जाता है, लेकिन कार्य के लिए बैक स्टैक बरकरार रहता है - कार्य केवल फोकस खो दिया है, जबकि एक अन्य कार्य होता है, जैसा कि आंकड़ा 2 में दिखाया गया है। एक कार्य फिर "पर लौट सकता है" अग्रभूमि "तो उपयोगकर्ता जहां वे छोड़ दिया है उठा सकते हैं। उदाहरण के लिए, मान लीजिए कि वर्तमान कार्य (टास्क ए) के कार्य में तीन गतिविधियाँ हैं- वर्तमान गतिविधि के तहत दो। उपयोगकर्ता गृह कुंजी दबाता है, फिर एप्लिकेशन लॉन्चर से एक नया एप्लिकेशन शुरू करता है। होम स्क्रीन दिखाई देने पर टास्क ए बैकग्राउंड में चला जाता है। जब नया एप्लिकेशन शुरू होता है, तो सिस्टम उस एप्लिकेशन (टास्क बी) के लिए एक कार्य शुरू कर देता है जिसमें गतिविधियों का अपना ढेर होता है। उस एप्लिकेशन के साथ बातचीत करने के बाद, उपयोगकर्ता फिर से घर लौटता है और उस एप्लिकेशन का चयन करता है जो मूल रूप से टास्क ए। शुरू करता है, टास्क ए अग्रभूमि में आता है - इसके स्टैक में सभी तीन गतिविधियां बरकरार हैं और स्टैक रिज्यूमे के शीर्ष पर गतिविधि है। इस बिंदु पर, उपयोगकर्ता घर पर जाकर टास्क बी पर भी वापस जा सकता है और उस कार्य को शुरू करने वाले एप्लिकेशन आइकन का चयन कर सकता है (या हाल के कार्यों को प्रकट करने और एक का चयन करने के लिए होम कुंजी को छू और पकड़कर)। यह एंड्रॉइड पर मल्टीटास्किंग का एक उदाहरण है। उपयोगकर्ता घर पर जाकर टास्क बी पर भी वापस जा सकता है और उस कार्य को शुरू करने वाले एप्लिकेशन आइकन का चयन कर सकता है (या हाल के कार्यों को प्रकट करने और एक का चयन करने के लिए गृह कुंजी को छू और पकड़कर)। यह एंड्रॉइड पर मल्टीटास्किंग का एक उदाहरण है। उपयोगकर्ता घर पर जाकर टास्क बी पर भी वापस जा सकता है और उस कार्य को शुरू करने वाले एप्लिकेशन आइकन का चयन कर सकता है (या हाल के कार्यों को प्रकट करने और एक का चयन करने के लिए गृह कुंजी को छू और पकड़कर)। यह एंड्रॉइड पर मल्टीटास्किंग का एक उदाहरण है।

नोट: एक ही बार में कई कार्य पृष्ठभूमि में आयोजित किए जा सकते हैं। हालाँकि, यदि उपयोगकर्ता एक ही समय में कई पृष्ठभूमि कार्य चला रहा है, तो सिस्टम स्मृति को पुनर्प्राप्त करने के लिए पृष्ठभूमि गतिविधियों को नष्ट करना शुरू कर सकता है, जिससे गतिविधि की स्थिति खो जाती है। गतिविधि राज्य के बारे में निम्नलिखित अनुभाग देखें।

सारांश : जब आप दबाते हैं Homeऔर स्मृति में बैठते हैं तो कार्य को पृष्ठभूमि में ले जाया जाता है , वास्तव में कुछ भी नहीं कर रहा है और अपनी स्थिति को बनाए रखता है। इसका मतलब यह है कि (आम तौर पर बोलते हुए) आप कार्य पर वापस जा सकते हैं और इसे वहीं छोड़ देंगे जहां इसे छोड़ा गया था। हालांकि, एंड्रॉइड सिस्टम पृष्ठभूमि कार्यों को मार सकता है और करेगा - यदि उसे मेमोरी को पुनः प्राप्त करने की आवश्यकता है। यह कब और क्यों होता है यह पूरी तरह से सिस्टम पर निर्भर करता है, और शायद इसीलिए आपको फिर से शुरू होने पर असंगत व्यवहार दिखाई देता है।

यदि सिस्टम द्वारा कार्य को नष्ट कर दिया जाता है, तो इसे फिर से लॉन्च करने पर इसे फिर से बनाना होगा। इसलिए जब तक कि एप्लिकेशन लेखक ने नष्ट प्रक्रिया के दौरान एप्लिकेशन की स्थिति को बचाने के लिए उपाय नहीं किए हैं, तब तक यह खो जाएगा (और गेम जैसी चीजों में सटीक स्थिति को सहेजना काफी अव्यावहारिक है)।

एक और अच्छा (लेकिन यह भी क्रिया ) दस्तावेज़ एक है जो गतिविधि जीवनचक्र को कवर करता है (यदि आप थोड़ा नीचे स्क्रॉल करते हैं तो एक अच्छा फ्लोचार्ट है)।


इसलिए वे प्रति कार्य के आधार पर मारे जाते हैं, न कि प्रति गतिविधि / प्रक्रिया के आधार पर। उत्तरार्द्ध आंशिक कार्य हत्या की अनुमति देगा, जो संभवतः अवांछनीय है।
जिग्गंजर

4

होम कुंजी को दबाने से उपयोगकर्ता लॉन्चर को दिखाकर एक नया टास्क शुरू कर सकता है। सभी सक्रिय कार्य (और इसलिए गतिविधियाँ झुकाव। आपका "एयर कंट्रोल" उदाहरण) उनकी पद्धति को कॉल करेगा onPause()

यह ऐप (और उनकी गतिविधि) पर निर्भर है, जब वह वापस दिखाई देता है तो सटीक पिछली स्थिति को बहाल करने के लिए। यह भी संभव है कि एक्टिविटी बैकग्राउंड होने के दौरान एप्स प्रोसेस की मौत हो जाए, लेकिन इससे यूजर्स के अनुभव पर कोई असर नहीं पड़ना चाहिए। यदि कोई गतिविधि अभी रुकी हुई थी या यदि उसे मार दिया गया था, तो उपयोगकर्ता को अंतर बताने में सक्षम नहीं होना चाहिए। यह एयर कंट्रोल के विभिन्न व्यवहार की व्याख्या कर सकता है जो एंड्रॉइड जीवनचक्र प्रबंधन के दोषपूर्ण कार्यान्वयन का संकेत हो सकता है।


मुझे लगता है कि "मारे गए" से आप का मतलब है रुक गया, नष्ट होने के विपरीत। जब आप किसी प्रक्रिया (जैसे गतिविधि) को मारते हैं तो मैं सामान्य लिनक्स शब्दावली पर विश्वास करता हूं destroy()
जिग्गंजर

नहीं, मेरा मतलब है नष्ट।
फ्लो

जब आप होम की दबाते हैं तो onStopविधि कहा जाता है। एक मारे गए प्रक्रिया का मतलब यह नहीं है कि गतिविधि को इसकी onDestroyedविधि कहा जाता है, हालांकि यह वास्तव में समान है। एक गतिविधि को "मारना" का अर्थ है कि वीएम को रैम से हटा दिया गया है। मेरे लिए यह (Android इसे मार रहा है) उपयोगकर्ता अनुभव को प्रभावित करने की संभावना है।
जिग्गंजर

4

इस साइट पर मतदान करने के लिए मेरी प्रतिष्ठा अभी भी बहुत कम है, इसलिए मैं फ्लो के जवाब का सशक्तिकरण कर रहा हूं। मैं अपने एक ऐप में इस मुद्दे को जारी रखता हूं। मेरे पास विभिन्न स्पिनर नियंत्रण हैं और आपको अपने राज्य को onPause () में स्पष्ट रूप से सहेजना होगा और फिर राज्यों को onResume () में पुनर्स्थापित करना होगा - Android को अपने राज्यों को स्वचालित रूप से याद नहीं है।

एक और जटिलता यह है कि कभी-कभी एंड्रॉइड एक ऐप के ऑनक्रिएट () फ़ंक्शन को कॉल करेगा जब आप केवल इसे onResume () पर कॉल करने की उम्मीद करते हैं।

इसलिए एयर कंट्रोल (या किसी अन्य ऐप) के साथ आपका मुद्दा उस ऐप के लिए विशिष्ट है और आपको सुधार के लिए डेवलपर को व्यवहार की रिपोर्ट करनी चाहिए। अधिकांश ऐप का मार्केट में एक संपर्क ईमेल है।

BTW, यदि आप ऐप जीवन-चक्र को समझना चाहते हैं, तो मैं एड बर्नेटे के हैलो, एंड्रॉइड के अध्याय 2 की सिफारिश करता हूं, विशेष रूप से 2.3।


3

होम बटन दबाया जब एक app में:

अधिकांश ऐप उनके राज्य को बचाएंगे (किसी भी बिट डेटा को फिर से शुरू होने पर खुद को लगातार रखने के लिए आवश्यक होगा), और डिवाइस लॉन्चर ऐप पर स्विच हो जाएगा।

होम स्क्रीन पर होम बटन दबाया गया:

यह कई 3 पार्टी लॉन्चर द्वारा कॉन्फ़िगर करने योग्य है; हालांकि उनमें से बहुत से आपको अपने "मुख्य" होम स्क्रीन पर वापस लाने के लिए डिफ़ॉल्ट हैं (डिफ़ॉल्ट लॉन्चर ऐसा करता है)।

आपके मित्र को किस बात की चिंता हो सकती है:

स्विचिंग ऐप्स मेमोरी इंटेंसिव हो सकते हैं और डेटा को बचाने के लिए कई डिस्क लिखते हैं। यह बैटरी का उपयोग करता है; हालांकि यह आमतौर पर उपकरणों पर बैटरी नाली का मुख्य कारण नहीं है (ऑपरेटिंग सिस्टम इन चीजों को करने के लिए अनुकूलित हैं)।

कुछ एप्लिकेशन बैकग्राउंड एप्लिकेशन के रूप में चलती रहेंगी, इसलिए होम बटन को दबाने से उनकी मौत नहीं होगी (उदाहरण के लिए, Google Play Music होम बटन दबाने के बाद भी चलेगा)।

आपके मित्र को इस बात की चिंता हो सकती है कि होम बटन को दबाकर आपने कार्यक्रम से बाहर नहीं किया, और इसलिए यह अभी भी चल रहा है। एंड्रॉइड उन एप्लिकेशन को आवश्यकतानुसार लोड करेगा।

आपको और आपके मित्र को प्रदर्शन से अधिक चिंतित होना चाहिए - जो कि सबसे अधिक मात्रा में बिजली का उपयोग करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.