एंड्रॉइड टास्क एफिनिटी स्पष्टीकरण


104

वास्तव में किस विशेषता का taskAffinityउपयोग किया जाता है? मैं प्रलेखन के माध्यम से चला गया, लेकिन मैं ज्यादा समझ नहीं सका।

क्या कोई आम आदमी की कार्यशैली को स्पष्ट कर सकता है?


1
: यहाँ उदाहरण के साथ बहुत अच्छा व्याख्या दी गई है slideshare.net/RanNachmany/...
user1269737

मुझे लगता है कि यह उत्तर सबसे अच्छा है: stackoverflow.com/a/21383301/1318946
प्रतीक बुटानी

जवाबों:


160

Android टास्क एफिनिटी का उपयोग किसके लिए किया जाता है?

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

E   - chat view
D   - weather screen
C   - map view
B   - weather screen
A   - login screen

ई अंतिम गतिविधि थी जिसे शुरू किया जाना था और यह प्रदर्शित हो रही है। यदि आप E को बंद करते हैं, तो D दिखाया जाएगा। यदि आप D को बंद करते हैं, तो C दिखाया जाएगा। आदि।

ध्यान दें कि क्रियाएँ Bऔर Dवही गतिविधि हैं। क्या होगा यदि उपयोगकर्ता को कुछ संशोधन करने थे D weather screen, और फिर गतिविधि को बंद करने का फैसला किया, फिर उपयोगकर्ता को बंद करेंC Map view ?

तब उपयोगकर्ता मौसम की स्क्रीन पर वापस आ जाएगा और उपयोगकर्ता नाखुश होगा क्योंकि स्तर पर किए गए परिवर्तनों को स्तर D weather screenमें सहेजा नहीं गया था B weather screen। हालाँकि यह एक ही गतिविधि है, यह उस गतिविधि का एक अलग स्टेट है।

उपयोगकर्ता के पास गतिविधियों की एक 5 परत थी, और उनमें से दो समान गतिविधि थी। स्टैक के सभी 5 को बंद करने से वह घटना उत्पन्न होगी जहां आप एक ही गतिविधि के दो अलग-अलग संस्करणों के साथ बातचीत करेंगे और काफी भ्रमित हो सकते हैं।

उपयोगकर्ता आमतौर पर गतिविधियों के कठोर ढेर के संदर्भ में नहीं सोचते हैं। वे सोचते हैं: "मौसम का दृश्य मैं वहां बदलाव करूंगा" और फिर वे मानचित्र दृश्य पर वापस जाना चाहते हैं। फिर वापस ऊपर जाएं क्योंकि वे लॉगिन स्क्रीन पर वापस जाना चाहते हैं। क्यों B weather appदिखाया जा रहा है और यह सेटिंग्स को स्तर से क्यों नहीं बचाता है D?

प्रोग्रामर अगर क्रियाएँ कुछ भ्रम की स्थिति को दूर करने में सक्षम हो सकता Bहै और Dराज्य से जुड़ी हुई है। इस तरह एक व्यक्ति दूसरे को बदलता है। हर बार जब उपयोगकर्ता एक नई मौसम स्क्रीन खोलता है, तो वह गुप्त रूप से मौसम स्क्रीन का एकल उदाहरण खोलता है।

इन परिस्थितियों में, कार्य को बदलना गतिविधि के क्षेत्र में वांछनीय हो सकता है। उपयोगकर्ता स्तर D को बदल देगा और फिर B के स्तर तक वापस आ जाएगा और B में वे परिवर्तन देखेगा जो D को किए गए थे।

कार्यक्रम एक स्टैक रखता है जिसके माध्यम से आप बैकअप ले सकते हैं, जो अच्छा है, और जब उपयोगकर्ता यादृच्छिक स्थानों में एक ही गतिविधि के एक्स इंस्टेंस को खोलता है, तो वे सभी एक होते हैं।

अधिक विवरण के साथ स्लाइड शो: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack


13
कैसे के बारे में अगर का उपयोग करने के singleInstanceबजाय का उपयोग करें taskAffinity?
hguser

5
ऊपर वर्णित मामले में, मैं Intent.FLAG_ACTIVITY_REORDER_TO_FRONT को Intent कॉलिंग गतिविधि D में एक ध्वज के रूप में उपयोग करना पसंद करूंगा, इससे अन्य सभी के ऊपर गतिविधि B आ जाएगी और इसका केवल एक उदाहरण
रहेगा

63
वास्तव में, यह उत्तर शायद ही किसी को छूता है taskAffinity:-( स्पष्टीकरण अस्पष्ट है। आश्चर्यजनक है कि उत्तर के उत्तर इतनी उथल-पुथल प्राप्त करते हैं।
डेविड वासर

5
इतना लंबा जवाब लेकिन फिर भी सरल तथ्य का उल्लेख नहीं taskAffinityकिया जाता है: उस गतिविधि का नाम निर्दिष्ट करने के लिए उपयोग किया जाता है जिसे गतिविधि चलाने के लिए पसंद करती है। जब Intentध्वज होता है FLAG_ACTIVITY_NEW_TASK, तो गतिविधि को इस विशेष कार्य में डाल दिया जाता है (द्वारा परिभाषित taskAffinity)।
स्टेन मॉट्स

2
Although it's the same activity, it's a different STATE of that activity.मैं कहूंगा, "यह उस गतिविधि का एक और उदाहरण है।"
Maksim Dmitriev

6

आत्मीयता बताती है कि कौन सी गतिविधि किस कार्य से संबंधित है।

आत्मीयता दो परिस्थितियों में खेल में आती है:

जब कोई गतिविधि शुरू करने वाले इरादे में FLAG_ACTIVITY_NEW_TASK ध्वज होता है।

जब किसी गतिविधि की इसकी भत्ते की विशेषता "सच" पर सेट होती है।

कृपया http://developer.android.com/guide/compenders/tasks-and-back-stack.html देखें


26
Developer.android.com से कॉपी करने के लिए धन्यवाद
अनिर्बान

यह कुछ भी नहीं समझाता है। व्यवहार में इसका क्या अर्थ है?
जेम्स एंड्रयूज

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