2012-07-26 10 views
19

मैंने एंड्रॉइड डेवलपर गाइड और इंटरनेट में कुछ लेख पढ़े हैं, मैं अभी भी singleTasklaunchmode के बारे में भ्रमित हूं। आइए उदाहरण लें:एंड्रॉइड लॉन्चमोड "सिंगलटास्क" के बारे में

उपयोगकर्ता ऐप 1 लॉन्च करता है, एंड्रॉइड एक नया कार्य शुरू करता है। मान लें APP1 आदेश का पालन में गतिविधियों बनाता है:

ActivityA -> ActivityB -> ActivityC 

कि कैसे task1 तरह दिखता है।

तो उपयोगकर्ता घर स्थित बटन पर क्लिक करें और App2 लांच करने के लिए चुनते हैं, तो task1 पृष्ठभूमि में चला जाता है और एंड्रॉयड एक नया कार्य शुरू: task2, उपयोगकर्ता कुछ करता है:

ActivityD -> ActivityE 

अब ActivityE कोशिश ActivityB शुरू करने के लिए कहते हैं की सुविधा देता है, और ActivityB में लॉन्चमोड singleTask है।

मुझे क्या समझता है कि कार्य 1 फिर से सामने आता है और कार्य 2 पृष्ठभूमि में जाता है। और task1 इस तरह अब लग रहा है:

ActivityA -> ActivityB 

जिसका मतलब है:

  1. ActivityC task1 से निकाल दिया जाएगा और ActivityB शीर्ष गतिविधि हो जाता है।

  2. उपयोगकर्ता अब "वापस" बटन पर क्लिक करें, तो वह task2

की ActivityE के बजाय task1 वापस की ActivityA चल जाएगा मैं सही हूँ?

धन्यवाद

उत्तर

6

पर हैं ActivityC task1 और ActivityB हो जाता है से निकाल दिया जाएगा शीर्ष गतिविधि के लिए।

हाँ, आप सही हैं ...

ActivityC से अर्थात ActivityC की OnDestroy विधि बुलाया जाएगा निकाल दिया जाएगा। इसलिए जब उपयोगकर्ता फिर से कार्य 1 लॉन्च करता है, तो गतिविधि बी को गतिविधि सी के बजाए दिखाया जाता है।

ने 2 कार्य (प्रोजेक्ट) बनाए हैं और उसी @SendSpace को अपलोड किया है। कोशिश करके देखो...

आप एंड्रोइड्स documentation को देखें, तो यह

'ए' singleTask "गतिविधि अन्य गतिविधियों अपने कार्य का हिस्सा बनने के लिए अनुमति देता है। यह हमेशा अपने कार्य की जड़ में है, लेकिन अन्य गतिविधियों (जरूरी" कहते हैं मानक " और "सिंगलटॉप" गतिविधियां) उस कार्य में लॉन्च की जा सकती हैं। "

जिसका अर्थ है कि जब आप होम बटन पर क्लिक करते हैं तो एक ही कार्य गतिविधि (जो आपके मामले में गतिविधि बी है) के ऊपर सभी सक्रियताओं को ढेर से हटा दिया जाता है।

नमूना ऐप में मैंने आपको पहले दिया था यदि आप अभी "एंड्रॉइड टेस्ट" प्रोजेक्ट चलाते हैं और लॉग में होम बटन पर क्लिक करते हैं तो आप देख सकते हैं कि दूसरी गतिविधि रोक दी गई है, और जब आप इसे फिर से लॉन्च करते हैं "हालिया ऐप की" सूची दूसरी गतिविधि नष्ट हो गई है।

एक सेनारियो में जहां सिंगल इंस्टेंस एक्टिवेट्स (एक्टिविटीबी) से ऊपर की गतिविधि बैक स्टैक से नहीं हटाई जाती है, और अन्य एप्लिकेशन अनुरोध इस गतिविधि (गतिविधि बी) को दिखाया नहीं जा सकता है और इरादा छोड़ा जा सकता है। लेकिन इसमें घटने की संभावना कम है क्योंकि उपयोगकर्ता को होम बटन दबाया जाना चाहिए और बैकस्टैक में वर्तमान कार्य \ ऐप को किसी अन्य कार्य \ App पर नेविगेट करने से पहले उसे दबा देना होगा।

इसलिए चेतावनी

अन्य साधनों - singleTask और singleInstance - क्योंकि वे एक बातचीत मॉडल है कि उपयोगकर्ताओं को करने के लिए अपरिचित होने की संभावना है और अधिकांश अन्य से बहुत अलग है में परिणाम, सबसे अनुप्रयोगों के लिए उपयुक्त नहीं हैं अनुप्रयोगों।

मुझे आशा है कि इससे आपके संदेह हल हो जाएंगे। http://developer.android.com/guide/topics/manifest/activity-element.html#lmode इसे कहते हैं:

+0

धन्यवाद, लेकिन इस पोस्ट में जवाब मुझे भ्रमित करता है: http://stackoverflow.com/questions/3219726/android-singletask- या सिंगलइंस्टेंस-लॉन्च-मोड "सिंगल टास्क" या "सिंगल इंस्टेंस" गतिविधि के एक से अधिक उदाहरण कभी नहीं होते हैं, ताकि उदाहरण सभी नए उद्देश्यों को संभालने की अपेक्षा की जा सके ... हालांकि, "सिंगल टास्क" गतिविधि हो सकती है या नहीं ढेर में इसके ऊपर अन्य गतिविधियां हैं। यदि ऐसा होता है, तो यह इरादा को संभालने की स्थिति में नहीं है, और इरादा गिरा दिया गया है। (भले ही इरादा गिरा दिया गया हो, इसके आगमन से कार्य अग्रभूमि में आ जाएगा, जहां यह रहेगा।) – cn1h

+1

"जिसका अर्थ है कि जब आप होम बटन पर क्लिक करते हैं तो एक ही कार्य गतिविधि के ऊपर सभी सक्रियण (जो आपके केस एक्टिविटीबी है) स्टैक से हटा दिए जाते हैं। " बस एक परियोजना में यह पाया, यह मामला है। धन्यवाद। –

+0

"सेंडस्पेस" लिंक टूटा हुआ है –

18

आपको सही लगता है।

आप इसका परीक्षण क्यों नहीं करते हैं।

वहाँ भी इस एप्लिकेशन लांच मोड समझाने में मदद कर सकते है:

https://play.google.com/store/apps/details?id=com.novoda.demos.activitylaunchmode

enter image description here

सूत्रों का कहना है https://github.com/gnorsilva/Activities-LaunchMode-demo

+0

धन्यवाद, लेकिन क्या im भ्रमित इस दस्तावेज़ है इसके विपरीत, "singleTask" और "सिंगल इंस्टेंस" गतिविधियां केवल एक कार्य शुरू कर सकती हैं। वे हमेशा गतिविधि ढेर की जड़ पर रहते हैं। – cn1h

+1

डेमो में एक गलती है। जब आप एक नई गतिविधि शुरू करते हैं जिसका लम्बाई मोड 'सिंगल टास्क' होता है, तो गतिविधि हमेशा एक नए कार्य में बनाई जाएगी। लेकिन वास्तव में, यह केवल एक नए कार्य में बनाया जाएगा यदि आप सेट करते हैं गतिविधि के लिए ** कार्यकाल **। – smileVann

+1

https://github.com/gnorsilva/Activities-LunchMode-demo/issues/2 –

संबंधित मुद्दे