2010-12-08 16 views
6

यदि आपके पास एक एंड्रॉइड ऐप है जिसमें एक से अधिक गतिविधि हैं, और एक्टिविटी ए शुरू होता है, तो यदि गतिविधि बी क्रैश हो जाती है तो प्रक्रिया मारे जाती है लेकिन एंड्रॉइड ओएस द्वारा पुनर्जीवित की जाती है और ऐप को बंद करने की बजाए गतिविधि ए फिर से शुरू होती है, क्यों ?एंड्रॉइड 'क्रैशिंग ऐप' को पुनर्जीवित क्यों करता है?

+0

क्या यह वास्तव में ए को पुनर्जीवित करता है, या सिर्फ बी को मारता है? – blindstuff

+0

यह पूरी प्रक्रिया को पुनरारंभ करता है, लेकिन क्रिएट और ऑनस्टार्ट केवल ए के साथ शुरू होता है, यदि आपके पास बी शुरू होता है जो सी शुरू करता है और सी को क्रैश करने वाला अपवाद होता है तो एंड्रॉइड एप्लिकेशन प्रक्रिया शुरू कर देगा और बी को अग्रभूमि पर रखेगा, अगर आप दबाएंगे 'बैक' कुंजी आपको फिर से मिल जाएगी, हालांकि यह फिर से ए ऑन ऑनक्रेट को कॉल करेगा। – codeScriber

+0

हाँ, मैंने आपके द्वारा उल्लेखित प्रयासों की कोशिश की, ऐसा लगता है कि आप सही हैं, हालांकि कभी-कभी मैं इसे हमेशा ए पर वापस जाने के लिए प्राप्त करता हूं। उम्मीद है कि कोई जवाब जानता है। – blindstuff

उत्तर

4

आप शिकायत कर रहे हैं कि एंड्रॉइड क्रैश के बाद आपके ऐप की स्थिति को ठीक से पुनर्प्राप्त करने का प्रयास करेगा? ;)

यह एंड्रॉइड के संसाधन प्रबंधन और गतिविधि पर गतिविधि जीवन चक्र का परिणाम है। ध्यान रखें कि एक ही कार्य कई क्रियाओं से बना हो सकता है जो कई प्रक्रियाओं या ऐप्स को फैला सकता है। जैसा कि यहां उल्लिखित है: http://android-developers.blogspot.com/2010/04/multitasking-android-way.html एंड्रॉइड प्रक्रिया पारंपरिक * निक्स प्रक्रिया भावना में "साफ-सफाई" बंद नहीं करती है। आपके ऐप के घटकों को जीवन चक्र की घटनाएं मिलती हैं लेकिन एक निश्चित बिंदु के बाद ऐप को बिना किसी चेतावनी के मार दिया जा सकता है ताकि सिस्टम अपने संसाधनों को पुनः प्राप्त कर सके।

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

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

लेकिन पिछले गतिविधि स्थिति को बहाल करने वाली घटनाओं का यह वही अनुक्रम एक ही प्रक्रिया में उसी ऐप के भीतर भी हो सकता है। आपके परिदृश्य में, क्रैश के परिणामस्वरूप गतिविधि बी बंद हो गया। तो सिस्टम ठीक वही करता है जो यह हमेशा करता है - यह पिछली गतिविधि पर वापस आ जाता है: गतिविधि ए। लेकिन गतिविधि ए की प्रक्रिया अभी भी आसपास नहीं है (यह दुर्घटनाग्रस्त हो गई है) ताकि सिस्टम इसे पुनरारंभ कर सके और यह अपने पिछले राज्य का पुनर्निर्माण कर सके।

+0

यह सच है कि आप क्या कहते हैं, हालांकि लॉगकट में आप देख सकते हैं कि एप्लिकेशन को सिग्नल 3 प्राप्त हुआ है (भले ही मार डालो) यह अभी भी नास्तिक रूप से मर जाता है, जिसका मतलब है कि ऑनस्ट्रॉय और एप्लिकेशन के ऑन टर्मिनेट को नहीं कहा जाता है। मैं शिकायत नहीं कर रहा हूं, लेकिन मैं विशेष रूप से मेरे लिए बगिंग कर रहा हूं और मैंने सोचा कि यह अच्छा होगा अगर इसे रोकने से रोकने का कोई तरीका था क्योंकि कार्यों और प्रक्रियाओं के कई पहलुओं को बदला जा सकता है। – codeScriber

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