इसे छोड़ते समय Android गतिविधि को कैसे मारें ताकि इसे बैक बटन से एक्सेस नहीं किया जा सके?


130

दी गई Android गतिविधि में, मैं किसी बिंदु पर उपयोगकर्ता के लिए एक नई गतिविधि शुरू करना चाहूंगा। एक बार जब वे पहली गतिविधि छोड़ देते हैं और दूसरे स्थान पर पहुंच जाते हैं, तो पहली गतिविधि बासी हो जाती है और मैं इसे पूरी तरह से हटा देना चाहता हूं, इसलिए इसे वापस बटन से फिर से एक्सेस नहीं किया जा सकता है।

इसे पूरा करने का सबसे अच्छा तरीका कैसे है? उपयोगकर्ता द्वारा नई गतिविधि शुरू करने के तुरंत बाद मैं इस गतिविधि को कैसे मारूं या नष्ट कर दूं?


इस उत्तर की जाँच करें , यह मेरे लिए उपयोगी था।
दानियार

जवाबों:


234

आपको बस कॉल करने की आवश्यकता है finish()

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();

धन्यवाद। इसे एक कदम आगे बढ़ाने के लिए, मैं एक संवाद खिड़की से नई गतिविधि शुरू कर रहा हूं - क्या कोड उसी तरह काम करेगा?
जॉनरॉक

@ कैसीबी इसके लिए धन्यवाद..लेकिन मैं जानना चाहता हूं, क्या मैं किसी सेवा से इस विधि को कॉल कर सकता हूं यदि हाँ तो कैसे?
स्विफ्टबॉय

1
सेवाओं में एक गतिविधि नहीं है जिसका अर्थ है कि वे वापस जाने के लिए गतिविधि स्टैक में नहीं होंगे। यदि आप अपनी सेवा से कुछ गतिविधि को मारना चाहते हैं, तो आपको myActivity.finish () कॉल करने में सक्षम होना चाहिए;
केसीबी

3
इसका 7 साल पुराना जवाब है, और फिर भी यह एंड्रॉइड एम और एन के लिए वैध है।
जीशान

1
@juztcode onDestroyएक जीवन चक्र विधि है जो केवल एंड्रॉइड फ्रेमवर्क से कॉल करने के लिए होती है।
केसीबी

106

android:noHistory="true"जब भी इसे नेविगेट किया जाता है, तब गतिविधि में आपके प्रदर्शन में सेटिंग करना स्टैक से एक गतिविधि को हटा देगा। यहाँ देखें



8

आप android:noHistory="true"अपने Activityटैग में भी जोड़ सकते हैं AndroidManifest.xml

<activity
            ...
            android:noHistory="true">
</activity>

7

हां, आपको जो भी गतिविधि बंद करनी है, उसे कॉल फिनिश () करना होगा।


4

अपने नए इरादे को शुरू करने के बाद इसे प्रत्येक "नई गतिविधि" में लिखें->

Intent i = new Intent(this, yourClass.class);
startActivity(i);
finish();

2

अंत में, मुझे एक समाधान मिला!

मेरा संदर्भ यह है : - जब मैं गतिविधि को नष्ट कर देता हूं, तो मैं सॉकेट कनेक्शन को डिस्कनेक्ट करना चाहता हूं, मैंने गतिविधि () को समाप्त करने की कोशिश की, लेकिन यह मेरे काम नहीं आया , इसका कनेक्शन कहीं और रहता है।

इसलिए मैं android.os.Process.killProcess(android.os.Process.myPid()); अपनी गतिविधि का उपयोग करता हूं और मैंने android:excludeFromRecents="true" हाल की गतिविधि से हटाने के लिए उपयोग किया है ।


1
इस समाधान ने मेरे लिए काम किया लेकिन दुर्भाग्य से एक खाली पृष्ठ दिखाता है और सॉकेट कनेक्शन को बंद करने के लिए आप सॉकेट का उपयोग कर सकते हैं। क्लोज़ (); ।
मेहरदाद

android.os.Process.killProcess(android.os.Process.myPid())एप्लिकेशन प्रक्रिया को मारता है और न केवल गतिविधि। इसका मतलब यह है कि किसी भी चल रही सेवा (पृष्ठभूमि या अग्रभूमि) को भी रोक दिया जाएगा।
लेखिक बसु


0

नई गतिविधि शुरू करते समय आपको बस नीचे दिए गए कोड का उपयोग करना होगा।

startActivity(new Intent(this, newactivity.class));
finish();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.