2010-11-19 6 views
14

मेरे आवेदन को बहाल करने के बाद, निश्चित रूप से।यदि ओएस मेरे आवेदन को मारता है, तो इंटेंट() एक ही अतिरिक्त के साथ इरादा वापस कर देगा?

या मुझे सब कुछ स्टोर करने के लिए SaveInstanceState() पर स्टोर करना है?

उत्तर

8

यह बातचीत यह जवाब देने के लिए लगता है : http://groups.google.com/group/android-developers/browse_thread/thread/f47af26b696af2e2। "हां और नहीं" से शुरू होने वाली पोस्ट की तलाश करें और इससे पहले कुछ।

उत्तर सकारात्मक में है: हाँ, ओएस द्वारा बंद की गई गतिविधि को पुनरारंभ करने के बाद, getIntent() मूल के समान एक्स्ट्रा के साथ एक इरादा वापस कर देगा।

फिर भी, अगर कुछ एंड्रॉइड विशेषज्ञ पुष्टि कर सकते हैं, तो मुझे यह सुनकर खुशी होगी। :)

0

Sobear,

कि के लिए जवाब है, "नहीं, ऐसा नहीं है"। इसके लिए कई अलग-अलग कारण हैं। सबसे पहले, आइए रीहैश करें कि एक गतिविधि कैसे काम करती है (मुझे पता है कि आप इसे जानते हैं, लेकिन मैं एक बिंदु को चित्रित कर रहा हूं)।

  1. गतिविधि शुरू करने के लिए, एक इरादा बनाया गया है। यह मंशा होम स्क्रीन पर ऐप आइकन से हो सकता है, जो आपके ऐप के एक घटक से वर्तमान में चल रहा है, या किसी अन्य ऐप के किसी अन्य घटक से भी प्रदान किया गया है बशर्ते उन्हें इसे लॉन्च करने की अनुमति हो।

  2. इरादा एंड्रॉइड को भेजा जाता है, और एंड्रॉइड इसे ऐप पर भेजकर इसे हल करने का प्रयास करता है, या उपयोगकर्ता से पूछताछ करता है कि यह स्वयं से हल नहीं हो सकता है।

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

  4. उपयोगकर्ता कुछ सामान करता है, विचलित हो जाता है और अन्य गतिविधियों पर चलता है। ऐप अभी भी जारी है जब तक कि स्मृति कम न हो।

  5. मेमोरी कम हो जाती है और एंड्रॉइड गतिविधि को मार देता है। गतिविधि इरादा खो देती है (जब तक कि यह किसी भी तरह से सहेजा नहीं गया हो)।

  6. उपयोगकर्ता देखता है कि गतिविधि की मृत्यु हो गई है और फिर से शुरू करने का निर्णय लिया गया है। > कदम 1.

के बाद से एक नया आशय एप्लिकेशन को पुनः प्रारंभ करने की जरूरत पड़ी, पुराने इरादे अब गतिविधि के लिए keyed है वापस जाने के लिए - एंड्रॉयड गतिविधि शुरू करने के लिए एक नया आशय पैदा करता है। यह कचरा में एकत्र किया गया है या नहीं, मुझे यकीन नहीं है कि यह कब होता है, लेकिन यह सुलभ नहीं है। यदि आपके एक्स्ट्रा को स्टोर करना आपकी चिंता है, तो ऐसा करने का एक ही तरीका है (निश्चित रूप से कई संभावित कार्यान्वयन)। इरादा और अतिरिक्त कुछ तरीकों से संग्रहीत किया जाना चाहिए। यह getIntent() फ़ंक्शन को प्रभावित नहीं करेगा, लेकिन आप इसे आधार पर व्यक्तिगत getOriginalIntent() फ़ंक्शन बना सकते हैं। वहाँ से, वहाँ विकल्पों में से एक नंबर रहे हैं ... उदाहरण के लिए, आप मूल उद्देश्य के साथ गतिविधि को पुनः आरंभ सकते हैं और फिर getIntent() यह काम करेगा ...

FuzzicalLogic

+0

लेकिन मैंने परीक्षण किया है कि क्या गतिविधि स्वचालित रूप से आपके लिए अतिरिक्त बचत को सहेजती है और कॉल 'getIntent()। GetExtras() ' –

0

ठीक है, आप हमेशा द्वारा डेवलपर विकल्पों में पर "गतिविधियां न रखें" ध्वज बदलकर एक सरल प्रयोग कर सकते हैं।

यदि वह ध्वज चालू है, जब भी आप एप्लिकेशन से बाहर निकलें (कहें, होम बटन पर क्लिक करें), ओएस गतिविधि को मार देगा, और जब आप अपने ऐप पर वापस आ जाएंगे, तो पिछली गतिविधि फिर से बनाई जाएगी।

मेरे प्रयोगों ने मुझे बताया कि गतिविधि के मनोरंजन के बाद getent() हमेशा एक ही डेटा होगा।

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