2011-10-07 10 views
11

क्या एक बार में कई गतिविधियां शुरू करना संभव है? मेरा मतलब है, मुख्य रूप से कुछ आदेशों में 3 गतिविधियां बनाएं और केवल अंतिम दिखाई देगी? अब तक, मैं केवल एक गतिविधि बनाने में सक्षम था।एंड्रॉइड - कई गतिविधियां शुरू करें

धन्यवाद

+3

आपको ऐसा करने की आवश्यकता क्यों होगी? केवल एक ही समय में सक्रिय हो सकता है, इसलिए यदि आपने इसे करने के लिए बहुत कुछ किया है, तो केवल अंतिम व्यक्ति ही दिखाया जाएगा और अन्य रोके जाएंगे। –

+1

पूरी तरह से ऊपरी टिप्पणी से सहमत हैं। आपको अपने ऐप के आर्किटेक्चर पर पुनर्विचार करना चाहिए, आप ऐसी गतिविधि क्यों शुरू करना चाहेंगे जो उपयोगकर्ता के लिए उपलब्ध न हो? – Egor

+1

आपको एक साथ कई गतिविधियों को शुरू करने की आवश्यकता क्यों है? –

उत्तर

3

पहले गतिविधि के अपने onCreate -Method के अंत में startActivity(new Intent(...); की कोशिश करो। यह तुरंत एक नई गतिविधि लॉन्च करेगा और पहले को रोक देगा। बैक-कुंजी के साथ आप पिछली गतिविधि

+1

इस दृष्टिकोण के साथ समस्या यह है कि यदि गतिविधि बी शुरू करने के बाद सिस्टम बी द्वारा सिस्टम को मार दिया गया (समाप्त) हो गया, और जब उपयोगकर्ता ऊपर बटन पर क्लिक करके गतिविधि बी पर वापस आ जाता है, तो गतिविधि बी के ऑनक्रेट गतिविधि सी फिर से शुरू करने की कोशिश करेंगे। – tmin

31

पर वापस आ जाएंगे, उदाहरण के लिए, उपयोगकर्ता ने कुछ नई सामग्री को प्रदर्शित करने के लिए अधिसूचना पर क्लिक करने के बाद ऐप में गहराई से लॉन्च करने के लिए ऐसा कुछ करने की आवश्यकता हो सकती है।

Intent i = new Intent(this, A.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
startActivity(i); 

Intent j = new Intent(this, B.class); 
j.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
startActivity(j); 

Intent k = new Intent(this, C.class); 
startActivity(k); 

इस तरह से आप एक ही समय में गतिविधियों ए, बी और सी शुरू करने और गतिविधियों एक करने के लिए संक्रमण को दबाने और B. आप गतिविधि सी के लिए अपने वर्तमान गतिविधि से एक भी संक्रमण हो सकता है में मैं दृढ़ता से सुझाव है कि आप उदाहरण के लिए, LogCat पर गतिविधि लाइफसाइक्ल विधि कॉल (ऑनक्रेट इत्यादि) लॉग करें। यह घटनाओं के क्रम को समझने में बहुत मदद करता है।

+1

काम करने की पुष्टि की, धन्यवाद: डी –

+0

धन्यवाद, यह काम कर रहा है। लेकिन मेरे पास एक और आवश्यकता है। मेरे पास 2 गतिविधियां ए और बी हैं। मुझे बी से शुरू करने के लिए startActivityForResult का उपयोग करने की आवश्यकता है। यदि मैं ऐसा करता हूं, तो ए में एक्टिविटी रिसर्च को कॉल नहीं किया जा रहा है। क्या उधर रास्ता है? – kishorer747

+0

लगता है कि @gmale इस – Ewoks

2

इस डिप लिंक या अन्य उपयोग के मामलों जहां, मूल रूप से, कृत्रिम कार्य (और सभी गतिविधियों यह शामिल करना चाहिए) के पुनर्निर्माण की जरूरत के जवाब में करने के लिए एक आम बात हो सकती है। कभी-कभी, मैनिफेस्ट में parents निर्दिष्ट करना पर्याप्त नहीं है।

TaskStackBuilder पर एक नज़र डालें। एक आम उदाहरण:

TaskStackBuilder.create(this) 
     .addNextIntent(intentOnBottom) 
     // use this method if you want "intentOnTop" to have it's parent chain of activities added to the stack. Otherwise, more "addNextIntent" calls will do. 
     .addNextIntentWithParentStack(intentOnTop) 
     .startActivities(); 
संबंधित मुद्दे