प्रोग्रामेटिक रूप से एंड्रॉइड एप्लिकेशन से बाहर निकलें () - जावा, एंड्रॉइड

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

मैं आवेदन से पूरी तरह से बंद करने में सक्षम होना चाहता हूँ दूसरा गतिविधि। क्या कोई इस तरह से जानता है कि मैं ऐसा कर सकता हूं?

उत्तर:

उत्तर № 1 के लिए 4

उपयोग finish() आपके में स्प्लैश स्क्रीन अपना दूसरा निर्माण करने से ठीक पहले activity, फिर उपयोग करें finish() दूसरा है activity: वह वापस नहीं लाएगा स्प्लैश स्क्रीन


जवाब के लिए 6 № 2

जब आप अपना आवेदन बंद करना चाहते हैं, तो आप कॉल कर सकते हैं

   finishAffinity();

या अगर आप इसे पृष्ठभूमि में बंद करना चाहते हैं तो आपको भी लिखना चाहिए,

एंड्रॉयड: excludeFromRecents = "true"

AndroidManifest में:

   <activity
android:name="com.smart.remote.main.SplashActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

जवाब के लिए 5 № 3

निष्पादित finish() स्पलैश गतिविधि पर एक समाधान है, लेकिन दो वैकल्पिक तरीके हैं:

  1. स्पलैश गतिविधि शुरू करें साथ में android:noHistory="true" इसकी स्पष्ट प्रविष्टि में
  2. माध्यमिक गतिविधि लॉन्च करें इरादा झंडा के साथ FLAG_ACTIVITY_CLEAR_TOP

मेरी वरीयता पहली होगी, क्योंकि उपयोगकर्ता इतिहास स्टैक में स्प्लैश स्क्रीन को कभी भी देखना नहीं चाहते हैं (या बिल्कुल, उस मामले के लिए, लेकिन यह एक अलग चर्चा है)।


जवाब के लिए 3 № 4

finishAffinity ();

यह ऐप से बस बाहर निकलता है


जवाब के लिए 2 № 5

कॉलिंग finish() किसी भी गतिविधि पर इसे नष्ट करने के लिए अपने जीवन चक्र के माध्यम से जाना होगा। निश्चित रूप से टुकड़े को नष्ट करने के लिए इसे पीछे की ढेर से हटा दिया जाएगा।

इसलिए, आपको फोन करना है finish(); अपनी स्पलैश गतिविधि से पहले विधि, फिर शुरू करें MainActivity निम्नलिखित के इरादे का उपयोग कर

finish();
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);

आप विधि को ओवरराइड करके इस समस्या को भी हल कर सकते हैं OnBackPressed कॉल किए बिना एक खाली के साथ Super.onBackPressed ();


उत्तर के लिए 1 № 6

भले ही आप इसे नहीं चाहते हैं, मैं आपको यह बताना चाहता हूं कि साफ से बाहर निकलने का एकमात्र तरीका उपयोग कर रहा है finish()। अगर आपको कुछ समस्याएं बंद हो रही हैं Activities पृष्ठभूमि में, इसके लिए एक और समाधान है, जांचें यह लिंक

असल में वहाँ "नहीं है एक बार दबाओ या यकायक इसे पूरा करने का तरीका, और उपयोग नहीं करते हैं System.exit(), यह एक बुरा अभ्यास है, जैसा कि आप पढ़ सकते हैं यहाँ


उत्तर के लिए 1 № 7

खत्म करने का रास्ता है।एक बार इसकी आवश्यकता होने के बाद आप वास्तव में अपनी स्प्लैशस्क्रीन गतिविधि बंद कर सकते हैं। अर्थात। स्प्लैशस्क्रीन की आवश्यकता नहीं होने के बाद, अपनी मुख्य गतिविधि शुरू करने के बाद बस उस पर कॉल करें।

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


जवाब के लिए 0 № 8

संपादित करें: बस स्पष्ट होना, यह है नहीं एक आवेदन से बाहर निकलने का सही तरीका। अपने जोखिम पार इस्तेमाल करें। ओपी पूछ रहा था आवेदन से बाहर निकलने का तरीका, भले ही यह नहीं था सही बात मार्ग।

System.exit(0)

क्या आप यही खोज रहे हैं?


जवाब के लिए 0 № 9

मैं आपसे पूरी तरह सहमत हूं finish() किसी भी तरह व्यावहारिक नहीं है लेकिन वैसे भी आप इसे आसानी से उपयोग कर सकते हैं और सभी मुझे लगता है कि सर्वोत्तम प्रथाओं के साथ "कोशेर" होगा।

आपके ऐप में किसी अन्य गतिविधि से "बाहर निकलने" को संभालने के लिए यहां एक छोटा ट्यूटोरियल है:

मुझे लगता है कि स्प्लैश स्क्रीन आपके ऐप में पहली गतिविधि है।

  1. यदि आपके ऐप में मुख्य / होम स्क्रीन भी है तो स्पलैश गतिविधि को समाप्त करें, मुख्य / घर को आपकी स्पलैश गतिविधि से इरादे से बुलाया गया है उदा।

startActivity(new Intent(getApplication(), Home.class)); Splash.this.finish();}

ऐसा करने के बाद, चरण 2 का पालन करें। लेकिन स्प्लैश स्क्रीन पर ऑनस्यूड को ओवरराइड करने के बजाय इसे होम / मुख्य स्क्रीन में ओवरराइड करें।

2. यदि आपके उपयोगकर्ता को बाद में स्पलैश स्क्रीन तक पहुंच की आवश्यकता है, तो नहीं finish() आपकी स्प्लैश स्क्रीन लेकिन इसके बाद रेस्यूम विधि को ओवरराइड करें:

@Override protected void onResume() { super.onResume(); try { Intent i = getIntent(); Boolean isExit = i.getBooleanExtra("isExitAction",false); if(isExit){ this.finish(); } } catch (Exception e){} }

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

        Intent i = new Intent(this, Home.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.putExtra("isExitAction", true);
startActivity(i);

यह क्या करता है:यदि आप अपनी 5 वीं गतिविधि से एक बटन दबाते हैं जो कोड को तीसरे चरण में चलाता है तो यह पिछले सभी गतिविधियों को समाप्त करता है 4,3,2 और आपको गतिविधि 1 पर "रीडायरेक्ट करता है", जो आपका होम (या स्पलैश) है। पुनर्निर्देशन के बाद, onResume() कहा जाता है, और यह अंतिम शेष गतिविधि खत्म करता है। आवेदन पहुंचता है this.finish() केवल isExitAction सच हैं


संबंधित सवाल
सबसे लोकप्रिय