2013-01-02 11 views
6

मेरे आवेदन में, जब मैं एक विशिष्ट गतिविधि शुरू करता हूं, तो मैं चाहता हूं कि उसी पैकेज में सभी गतिविधियां नीचे के ढेर से साफ़ हो जाएं। क्या कोई मेरी मदद कर सकता है कि यह कैसे करें? मैनिफेस्ट में android:noHistory="true" का उपयोग नहीं करना चाहता क्योंकि मैं केवल इस विशिष्ट गतिविधि को शुरू करने के लिए स्टैक इतिहास को साफ़ करना चाहता हूं।एक गतिविधि के नीचे गतिविधि स्टैक को साफ़ करने के लिए कैसे करें

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

मेरी बात को और अधिक स्पष्ट करने के लिए, मैं गतिविधि एक है लगता है। एक से शुरू गतिविधि बी। बी से मैं सी शुरू करते हैं। लेकिन जब मैं सी शुरू करता हूं तो मैं बी और ए को साफ़ करना चाहता हूं।

+1

आप प्रत्येक इरादे से गुजरने के बाद फिनिश() का उपयोग कर सकते हैं। और दूसरा तरीका FLAG_ACTIVITY_CLEAR_TOP है, FLAG_ACTIVITY_NEW_TASK और फिर भी आप intent.addFlags (Intent.FLAG_ACTIVITY_NO_HISTORY का उपयोग कर सकते हैं। उम्मीद है कि यह आपकी मदद करेगा। – itsrajesh4uguys

+0

मुझे खेद है, लेकिन यदि आप सवाल को और अधिक बारीकी से पढ़ते हैं तो आप देखेंगे कि मैंने उल्लेख किया है कि मैं चाहता हूं कि मैं चाहता हूं ** इस ** विशिष्ट गतिविधि को शुरू करने पर स्टैक इतिहास को मंजूरी दे दी जाएगी, इसलिए कोई अन्य गतिविधि नहीं है। इसलिए यदि मैं रुकने पर हर गतिविधि को समाप्त करता हूं, तो जब मैं उन्हें चाहता हूं तो यह वहां नहीं होगा। मैं सिर्फ ढेर नहीं चाहता मैंने जिस विशिष्ट गतिविधि का उल्लेख किया है, उसे शुरू करने के लिए वहां होना चाहिए क्योंकि यह एक पारदर्शी गतिविधि है। –

+0

उस विशिष्ट गतिविधि को कॉल करने से पहले Intent.FLAG_ACTIVITY_NO_HISTORY का उपयोग करें। – itsrajesh4uguys

उत्तर

4

ओह दोस्तों, मैं पता लगा तुम सिर्फ आशय जो ढेर समाशोधन गतिविधि शुरू होता है के साथ निम्नलिखित कोड रखना होगा कि:

Intent i = new Intent(this,MyActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(i); 

हालांकि आपकी मदद के लिए धन्यवाद। प्रत्येक गतिविधि रीसाइक्लिंग के लिए

+0

वही है जो मैंने अपने उत्तर में बताया है। खुशी है कि आप इसे वैसे भी मिला। –

+2

मुझे खेद है, लेकिन मेरे जवाब में i.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TASK) इरादा नहीं है। FLAG_ACTIVITY_CLEAR_TOP। यद्यपि आपकी प्रतिबद्धता के लिए धन्यवाद। –

1

इस प्रयास करें,

अपने विशिष्ट गतिविधि है कि सभी खड़ी गतिविधि स्पष्ट करना चाहता था android:launchMode="singleTop" जोड़ें।

फिर अपनी विशिष्ट गतिविधि शुरू करते समय intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) और intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) का उपयोग करें।

स्रोत: Android: Clear the back stack

+0

नहीं, यह नहीं है मामला। मैंने अपना प्रश्न स्पष्ट करने के लिए उत्तर संपादित किया। –

1
Intent intent = new Intent(getApplicationContext(), YOUR_CLASS.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

मेरी कोई समाशोधन गतिविधि नीचे नहीं है इसके लिए ढेर। मैं इसे शीर्ष पर होना चाहता हूं। –

+0

मैंने इसे स्पष्ट करने के लिए अपना प्रश्न संपादित किया। –

1

सेट झंडे से पहले गतिविधि शुरू कर रहा है ... क्या गतिविधि शुरू करने के बाद झंडा स्थापित करने की बात .... कोड कुछ इस तरह दिखना चाहिए,

Intent intent = new Intent(getContext(), ClassName.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    v.getRootView().getContext().startActivity(intent); 

    removeSessionFiles(); 
+0

वी कक्षा – Puneet

+0

देखने के लिए जाता है वास्तव में यह कोड ऑनक्लिक विधि में नहीं है। यह एक सेवा में ब्रॉडकास्ट रिसीवर की एक ऑनसाइट विधि में है। –

+1

हो सकता है कि आप इस तरह की कोशिश कर सकें मान लीजिए कि हमारे आवेदन में, हमारे पास कई गतिविधियां हैं (दस कहें) और हमें सीधे इस गतिविधि से बाहर निकलने की आवश्यकता है। हम क्या कर सकते हैं, एक इरादा बनाएं और रूट गतिविधि पर जाएं और 'intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP) के इरादे में ध्वज सेट करें; भी, मंशा के लिए बूलियन जैसे कुछ अतिरिक्त जोड़ें।putExtra ("EXIT", सच); फिर जड़ गतिविधि में, बूलियन का मूल्य जड़ गतिविधि के अगर (getIntent()। GetBooleanExtra ("बाहर निकलें", गलत)) की जाँच करें और है कि कॉल खत्म (के अनुसार), onCreate में() { समाप्त(); } ' – Puneet