2015-09-06 7 views
5

मैं नष्ट करने के लिए देख रहा हूँ शुरू करने/एक पुराने गतिविधि उदाहरण निकालने के लिए, लेकिन मैं (बैक-स्टैक में अन्य सभी गतिविधियों को बनाए रखने की जरूरत है इसलिए FLAG_ACTIVITY_CLEAR_TOP पर्याप्त नहीं होगा)।हटाएँ पुराने गतिविधि उदाहरण है जब एक नई गतिविधि

उदा। कहते हैं कि मैं गतिविधियों एक है, बी & सी मैं शुरू: एक -> बी -> सी -> बी दूसरा बी गतिविधि मैं मौजूदा बी गतिविधि को हटाने की जरूरत के प्रारंभ में। इसलिए मैं अब है: एक -> सी -> बी चल ...

किसी भी मदद की सराहना की।

+1

कोशिश 'खत्म द्वारा ऐसा करने में सक्षम हूँ()' गतिविधियों में से प्रत्येक के शुरू करने से पहले। – Lal

+1

यदि मैं आपका अनुसरण करता हूं, तो खत्म करें() गतिविधि को मार देगा इसलिए बैक-स्टैक में केवल वर्तमान गतिविधि चल रही है? – ScottishUser

+0

हां संभोग..क्या यह आप चाहते हैं? – Lal

उत्तर

6

ऐसा लगता है कि गतिविधि को हटाना उतना आसान नहीं है जितना मैंने कल्पना की होगी, इसलिए पूर्ण जवाब नहीं है लेकिन मैं FLAG_ACTIVITY_REORDER_TO_FRONT का उपयोग करने जा रहा हूं। यह मौजूदा गतिविधि को मार नहीं देगा बल्कि इसके बजाय इसे ढेर के ऊपर ले जायेगा।

Intent intent = new Intent(ctx, Activity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 

यह ऊपर उल्लिखित गतिविधि नेविगेशन की अनुमति देगा।

मुझे अभी भी दिलचस्पी है यदि कोई वास्तविक गतिविधि को साफ़ करने के साधनों के बारे में जानता है।

+0

क्या यह नया उदाहरण बनाने के बजाय मौजूदा उदाहरण को सामने नहीं लाएगा? क्या होगा अगर मुझे पुराने मौजूदा इंस्टेंस को बंद करने की आवश्यकता है, और एक नया शुरू करें? – NarendraJi

+0

हाँ मैं अंत में ऊपर गया, शायद एक हैक भी हो सकता है लेकिन आप ढेर के शीर्ष पर जा सकते हैं, खत्म कर सकते हैं() और फिर उस गतिविधि को पुनरारंभ करें जिस तरह से आपने पुराने उदाहरण को मार दिया होगा और एक नया होगा? – ScottishUser

+0

यदि आप गतिविधि को अपडेट करना चाहते हैं तो आपको इसे न्यूइन्टेंट() के साथ संयोजन में उपयोग करना चाहिए। – zgc7009

3

आप Intent झंडे का उपयोग पहले कार्य को हटाने के लिए कर सकते हैं। उम्मीद है कि यह मदद करता है।

Intent intent = new Intent(this, Activity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 

यह ध्वज किसी मौजूदा कार्य का कारण बन जाएगा जो गतिविधि शुरू होने से पहले साफ़ होने के लिए गतिविधि से जुड़ा होगा। यही है, गतिविधि अन्यथा खाली कार्य की नई जड़ बन जाती है, और कोई भी पुरानी गतिविधियां समाप्त हो जाती हैं।

+0

धन्यवाद, ए, बी और सी सभी एक ही कार्य के तहत चल रहे हैं, उपर्युक्त सुझाव इस कार्य को इसलिए सभी गतिविधियों को मार देता है। अनिवार्य रूप से यह ऐप बंद कर देता है। – ScottishUser

+0

@ स्कॉटिश यूज़र, ओह ठीक है, मैंने पूरी तरह से इस सवाल को गलत समझा। यदि आप 'बी' के लिए 'सिंगलटॉप' विशेषता का उपयोग करते हैं तो क्या होगा? –

+1

सिंगलटॉप केवल तभी काम करेगा जब गतिविधि कार्य के शीर्ष पर थी, हालांकि डुप्लिकेट गतिविधि आवश्यक रूप से कार्य के शीर्ष पर नहीं होगी (ए, बी, सी उदाहरण देखें) इसलिए एक डुप्लिकेट गतिविधि परिणामस्वरूप होगी। एक बार फिर धन्यवाद। – ScottishUser

6

मैं onNewIntent

अधिभावी
@Override 
protected void onNewIntent(Intent intent) { 


     Bundle extras = intent.getExtras(); 
     Intent msgIntent = new Intent(this, MyActivity.class); 
     msgIntent.putExtras(extras); 
     startActivity(msgIntent); 
     finish(); 
     return; 

    super.onNewIntent(intent); 
} 

मेकअप गतिविधि एकल कार्य

<activity 
     android:name=".MyActivity" 
     android:launchMode="singleTask" > 
    </activity> 
संबंधित मुद्दे