2013-08-17 5 views
26

मैं एंड्रॉयड में प्रोग्रामिंग के बारे में बात कर रहा हूँ।अंतर (0)

शुरुआती दिनों में मैंने सोचा था कि, finish()वर्तमान गतिविधि बंद कर देता है और वापस गतिविधि ढेर में पिछले पर जाएँ, और System.exit(0)पूरे आवेदन बंद कर देता है।

लेकिन मैं गलत था। मैं एक छोटा सा प्रयोग किया जाता है और समझा जाता है कि दोनों केवल वर्तमान गतिविधि खत्म हो जाएगा।


अंतर केवल यह है कि मैं नोटिस सकता है, एंड्रॉयड 2.3.3 में

  • ActivityResultonActivityResult()finish() का उपयोग करके वापस प्रचारित किया जाता है। जबकि onActivityResult()System.exit(0) के लिए नहीं बुलाया गया।

लेकिन एंड्रॉइड 4.2.2 में, atctivityResult() दोनों के लिए बुलाया जाता है! और इरादे बाहर निकलने के लिए शून्य था()।

  • (मैं केवल इन 2 उपकरणों में परीक्षण किया गया) एक समय अंतराल जब बाहर निकलें() जबकि finish()तेजी है का उपयोग कर रहा है। (अधिक पृष्ठभूमि में कार्य की तरह लगता है बाहर निकलने में देखते हैं())

तो,

  1. क्या दोनों के बीच अंतर है?

  2. जो स्थितियों में, मैं) से बाहर निकलने के लिए उपयोग कर सकते (?

मेरा मानना ​​है कि वहाँ कुछ अधिक है कि मैं दो तरीकों के बीच में याद कर रहा हूँ है। आशा है कि कोई और समझा सकता है और मुझे सही कर सकता है।

धन्यवाद अनुरोध पर

संपादित करें:

2 क्रियाएँ के साथ एक Android आवेदन करें। इरादे का उपयोग कर लॉन्चर गतिविधि से दूसरी गतिविधि को कॉल करें। अब, दूसरी गतिविधि के अंदर, बटन पर क्लिक करें, System.exit(0); पर कॉल करें। "वीएम बंद हो जाता है आगे निष्पादन और कार्यक्रम बाहर निकल जाएगा।" ????

मैं पहली गतिविधि वहाँ देखने (documentation के अनुसार)। क्यूं कर? (आप साबित होता है कि मैं गलत हूँ स्वागत है/मैं सही था)

+1

http://stackoverflow.com/प्रश्न/2033914/बाहर निकलने-एक आवेदन-है-कि-सिकोड़ी-पर। जवाब यहां देखें – Raghunandan

+0

@ रघुनाथन: यह एक अच्छा है। कृपया हर कोई एक नज़र डालें। लेकिन जानकारी की एक बड़ी राशि। क्या कोई मेरे विषय में फिट होने के लिए संक्षेप में बता सकता है? – Nizam

+4

कभी भी 'System.exit()' का उपयोग न करें, मैं इसकी अनुशंसा नहीं करता। 'फिनिश()' का प्रयोग करें। नेविगेशन के लिए आप नेविगेशन ड्रॉवर का उपयोग कर सकते हैं। – Raghunandan

उत्तर

9

असल में कोई अंतर नहीं है यदि आपके पास केवल एक गतिविधि है। हालांकि, अगर आप ढेर है, तो पर कई गतिविधियों है:

  • खत्म() - गतिविधि कहाँ से कहा जाता है खत्म और आप पिछले गतिविधि देखें।
  • System.exit (0) - स्टैक पर एक कम गतिविधि के साथ ऐप को पुनरारंभ करता है। इसलिए, यदि आप ActivityA से ActivityB कहा जाता है, और System.exit(0) ActivityB में कहा जाता है, तो आवेदन को मार डाला और केवल एक ही गतिविधि के साथ तुरंत शुरू ActivityA
13

Android डेवलपर के अनुसार -

finish()

कॉल यह जब अपनी गतिविधि किया जाता है और बंद किया जाना चाहिए। ActivityResult को किसी भी व्यक्ति को पर एक्टिविटी रिसैट() के माध्यम से लॉन्च किया गया है।

System.exit(0)

वीएम आगे निष्पादन और कार्यक्रम से बाहर हो जाएंगे बंद हो जाता है।

+7

System.exit() आपके ऐप को नहीं मारता है यदि आपके पास स्टैक पर एक से अधिक गतिविधि हैं। कृपया यह जाँचें। – Nizam

+6

@ निज़म: "सिस्टम.एक्सिट() आपके ऐप को नहीं मारता है यदि आपके पास स्टैक पर एक से अधिक गतिविधियां हैं" - आपका स्वागत है कि आपके दावे का सबूत प्रदान करने के लिए आपका स्वागत है कि प्रक्रिया समाप्त नहीं होती है, जो प्रदर्शित करने वाले ऐप को अपलोड करके यह व्यवहार, यह पुष्टि करने के लिए किए गए चरणों के साथ कि प्रक्रिया समाप्त नहीं हुई थी। – CommonsWare

+6

@ कॉमन्सवेयर मैंने यह नहीं कहा कि प्रक्रिया समाप्त नहीं हुई है। और मुझे नहीं पता कि अंदर क्या हो रहा है। Abstraction में, चाहे मैं एक गतिविधि के अंदर खत्म() या निकास() का उपयोग कर रहा हूँ, पिछली गतिविधि दिखाया गया है। ऐप द्वारा मेरा मतलब यह नहीं था कि मार डाला गया। – Nizam

9

दस्तावेज़ीकरण के अनुसार, कार्यक्रम बाहर निकल जाएगा।
लेकिन यह प्रलेखन में एक बग लगता है। जावा कार्यक्रम के मामले में, यह सही है। लेकिन एंड्रॉइड में आ रहा है, आप पिछली गतिविधि को ढेर से देखेंगे।

चूंकि एंड्रॉइड कोडिंग जावा कोडिंग का उपयोग करके किया जाता है, इसलिए अधिकांश दस्तावेज जावा के समान होते हैं।
प्रलेखन से,

System.exit (0)
वीएम आगे निष्पादन और कार्यक्रम से बाहर हो जाएंगे बंद हो जाता है।

एंड्रॉइड पहलू के लिए, हमें 'प्रोग्राम' को किसी और चीज़ के साथ बदलना होगा। गतिविधि या संदर्भ हो सकता है।

1

सा क़दा जवाब मेरे परीक्षण के बाद सही है किया जाएगा।

खत्म इस गतिविधि को बंद कर देगा और वापस लौट जाएगा।

लेकिन बाहर निकलने के फ्रीज में वर्तमान गतिविधि भी बंद हो जाएगा और खाली सब गतिविधि और फिर पिछले गतिविधि

शुरू यदि आप केवल एक गतिविधि है असल में वहाँ कोई अंतर नहीं है। हालांकि, अगर आप ढेर है, तो पर कई गतिविधियों है:

खत्म() - गतिविधि कहाँ से कहा जाता है खत्म और आप पिछले गतिविधि देखें। System.exit (0) - स्टैक पर एक कम गतिविधि के साथ ऐप को पुनरारंभ करता है।इसलिए, यदि आप ActivityA से ActivityB कहा जाता है, और System.exit (0) ActivityB में कहा जाता है, तो आवेदन को मार डाला और ActivityA

केवल एक गतिविधि के साथ तुरंत शुरू हो जाएगा
संबंधित मुद्दे