जवाबों:
क्या यह तुरंत बाहर निकलता है या उस फ़ंक्शन को पूरा करता है जिससे इसे बुलाया गया था?
जिस विधि को कहा जाता है finish()वह पूरा होने तक चलेगी। finish()आपरेशन भी शुरू नहीं होगी जब तक आप Android के लिए नियंत्रण वापस जाएँ।
की तरह हर जीवन चक्र घटना onCreate, onResume, onPause.... onDestroy"मुख्य धागा" - एक गतिविधि का हमेशा एक ही धागे पर कहा जाता है।
संक्षेप में यह धागा एक कतार द्वारा समर्थित है, जिसमें सभी गतिविधि कार्यक्रम पोस्ट किए जा रहे हैं। यह धागा प्रविष्टि के क्रम में इन सभी घटनाओं को निष्पादित कर सकता है।
यदि आप finish()जीवन चक्र कॉलबैक में से एक में कॉल कर रहे हैं onCreate()... जैसे "कतार" संदेश इस कतार में जुड़ जाएगा, लेकिन थ्रेड को "फिनिश" क्रिया को लेने और निष्पादित करने के लिए स्वतंत्र नहीं है, जब तक कि वर्तमान में विधि रिटर्न निष्पादित नहीं किया जाता है अर्थात थ्रेड से मुक्त कर दिया जाता है। तत्कालीन कार्य।
ondestroy() आपकी गतिविधि नष्ट होने से पहले आपको मिलने वाली अंतिम कॉल है।
यह या तो हो सकता है क्योंकि गतिविधि खत्म हो रही है (किसी ने उस finish() पर कॉल किया, या क्योंकि सिस्टम अंतरिक्ष को बचाने के लिए अस्थायी रूप से इस उदाहरण को नष्ट कर रहा है। आप isFinishing() विधि के साथ इन दो परिदृश्यों के बीच अंतर कर सकते हैं ।
यदि ए और बी दो गतिविधियाँ हैं और आपका प्रवाह ए> बी से जा रहा है; और बी = एक कॉल finish()।
फिर,
वह विधि जहां से आपको बुलाया finish()गया है, जैसा कि मार्क ने उल्लेख किया है, निष्पादित करेगा। और कॉलबैक का प्रवाह निम्नानुसार होगा -
onPause() का activity AonRestart()> onStart()> onResume()गतिविधि बी केfinish()से activity A; केवल onStop()के Activity Aयहाँ बुलाया जाएगा। जबकि, इस मामले में, हम कहाँ finish()से बुलाए Activity A; इसलिए onStop()और onDestroy()दोनों को बुलाया जाएगा activity A।