2012-03-29 14 views
14

मैंने कई पोस्ट पढ़ी हैं जो onStart() और onResume() के बीच अंतर का वर्णन करती हैं: onStart() को गतिविधि दिखाई देने पर कॉल किया जाता है, onResume() कहा जाता है जब गतिविधि उपयोगकर्ता से बातचीत के लिए तैयार होती है। ठीक।एंड्रॉइड: ऑनस्टार्ट(), ऑनस्टॉप() पर कब उपयोग करें?

मैंने हमेशा onPause() और onResume() पर कोड जोड़ा है, और कभी भी onStart() और onStop() से परेशान नहीं किया है।

क्या कोई onStart(), बनाम onResume() में आप क्या कर सकते हैं इसके कुछ ठोस उदाहरण दे सकते हैं? onStop() और onPause() के लिए भी जाता है, onStop() कैसे उपयोगी है? मुझे यहाँ कुछ मौलिक याद आना चाहिए।

उत्तर

9

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

यह के कारणों से अलग है onStop के बिना बुलाया जा सकता है। उदाहरण के लिए स्क्रीन टाइम्स आउट हो या आप स्टैंडअल बटन दबाएंगे, लेकिन शायद onStop (स्मृति उपलब्ध नहीं है और क्या नहीं), तो यह एक "हल्का विराम" है। ऑनस्टॉप को शायद इस मामले में भी अंततः बुलाया जाएगा, लेकिन तुरंत नहीं।

ठीक है, लेकिन क्या उपयोग

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

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

कुछ संसाधनों को सहेजने के लिए पर्याप्त समझा जा सकता है जबकि गतिविधि का उदाहरण जीवित है और कुछ केवल तभी जब यह ढेर के सामने है। यह तय करने के लिए आप पर निर्भर है कि आपके आवेदन में सबसे अच्छा क्या है और बनाने/शुरू/फिर से शुरू करने की ग्रैन्युलरिटी आपको वह देती है।

+2

"ऑनस्टॉप() को तब कहा जाएगा जब आप किसी अन्य गतिविधि के लिए गतिविधि छोड़ते हैं" - असल में, यह तब कहा जाएगा जब आपकी गतिविधि अब दिखाई नहीं देगी। यदि एक संवाद-थीम वाली गतिविधि अग्रभूमि में आती है, तो 'ऑनस्टॉप() 'नहीं कहा जाता है। – CommonsWare

+0

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

+0

ओह, बिना किसी संदेह के, संवाद-थीम वाली गतिविधियां असामान्य हैं। – CommonsWare

0

मैं लगता है कि आपके सवाल का बहुत दस्तावेज़ पर यहाँ समझाया गया है: के बारे में पढ़ा Activity Life Cycle

+0

'ऑनस्टार्ट()' ऑनक्रेट() 'के बाद काम करता है' अपना कार्य समाप्त हो गया। 'onResume()' बैक बटन दबाकर जब आप अपने 'इरादे' या 'गतिविधि' पर वापस आते हैं तो काम करता है। –

+1

@ हम्ज़ा यह सच नहीं है। जब भी आपकी गतिविधि दृश्यमान दिखाई नहीं दे रही है, तो स्टार्ट() को कॉल किया जाता है। –

+0

कोई आदमी नहीं! मैंने अपने आवेदन पर ऑनस्टार्ट() किया था। ऐसा इसलिए था क्योंकि, मैं गतिविधि लोड करने के बाद webservice से डेटा लाने के लिए चाहता था। एंड्रॉइड गाइड [लिंक] द्वारा जांचें (http://developer.android.com/reference/android/app/Activity.html) –

1

ऑनस्टार्ट() के बाद काम करता है क्रिएट() ने अपना कार्य समाप्त कर दिया। ब्रॉडकास्ट रिसीवर डालने या यूआई के बारे में कुछ राज्य शुरू करने के लिए यह एक अच्छी जगह है जो उपयोगकर्ता को इस गतिविधि पर वापस आने पर लगातार प्रदर्शित होना चाहिए।

ऑनर्यूम() काम करता है जब आप बैक बटन दबाकर अपने इरादे या गतिविधि पर वापस आते हैं।इसलिए हर बार एक अलग गतिविधि अग्रभूमि में आने पर रोक दी जाएगी।

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