2011-01-21 15 views
26

यह पैटर्न पैटर्न मुख्य सर्वलेट (फ्रंट कंट्रोलर) के समान है जो वेब अनुप्रयोगों के विकास के लिए उपयोग किया जाता है।पैटर्न "एक गतिविधि, एकाधिक विचार": लाभ और नुकसान

इस पैटर्न का मुख्य विचार: हमारे पास एक गतिविधि है जो एकाधिक विचारों का प्रबंधन करती है और यह गतिविधि वर्तमान सामग्री का प्रतिनिधित्व करने के लिए ज़िम्मेदार है। सभी विचारों को गतिविधि के कार्यात्मक (उदाहरण के लिए जीवन-चक्र विधियों) की आवश्यकता नहीं है, इसलिए मुख्य प्रश्न यह है कि: यदि मैं बिना गतिविधि के जा सकता हूं तो मुझे इसका उपयोग क्यों करना है?


मैं इस पद्धति का उपयोग कर के निम्नलिखित नुकसान पाया है:

  1. आधिकारिक स्रोत Overload a Single Activity Screen करने की सिफारिश नहीं करता है, लेकिन वे क्यों की व्याख्या नहीं करते।

  2. हम TabActivity, ListActivity, MapActivity का उपयोग नहीं कर सकते। लेकिन उनके बिना जाने के लिए कुछ चाल हैं।

  3. यदि अलग-अलग स्क्रीनों में अलग-अलग मेनू होते हैं तो इसे बिना किसी गतिविधि के बनाने में समस्या होती है।
  4. अपने आप को इतिहास रखना जरूरी है। लेकिन इसे विकसित करना इतना मुश्किल नहीं है।

मैं इस पद्धति का उपयोग कर के निम्नलिखित लाभ पाया है:

  1. यह वर्तमान गतिविधि की सामग्री को बदलने के लिए की तुलना में किसी अन्य गतिविधि
  2. हम इतिहास का प्रबंधन करने के रूप में हम
  3. चाहते स्वतंत्र हैं शुरू करने के लिए सबसे तेज़ है
  4. हम केवल एक गतिविधि संदर्भ है, तो यह खोजने के लिए और स्मृति के साथ समस्याओं को हल करना अधिक आसान है लीक

क्या आप थी करना इस पैटर्न के बारे में एनके? क्या आप कोई अन्य लाभ/नुकसान प्रदान कर सकते हैं?

उत्तर

59

हम TabActivity, ListAcivity, MapActivity का उपयोग नहीं कर सकते हैं। लेकिन उनके बिना जाने के लिए कुछ चाल हैं।

यदि आप MapView का उपयोग करना चाहते हैं तो आपको MapActivity का उपयोग करना होगा। यदि आप वरीयता एक्सएमएल का उपयोग करना चाहते हैं तो आपको PreferenceActivity का उपयोग करना होगा।

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

अपने इतिहास के प्रबंधन में कठिनाई इस बात पर निर्भर करेगी कि इतिहास को क्या होना चाहिए। एक साधारण जादूगर के लिए कार्यान्वयन इतिहास काफी आसान होगा। हालांकि, यह एक विशेष रूप से सरल परिदृश्य है। एंड्रॉइड में इतिहास प्रबंधन कोड की एक उचित मात्रा है कि आपको मनमाने ढंग से अन्य मामलों के लिए फिर से लिखना होगा।

आप भी भूल गए:

# 5।आप स्मृति को रिसाव करने के लिए प्रवण होंगे, क्योंकि आप सामान को साफ करना भूल जाएंगे, और एंड्रॉइड सामान को साफ नहीं करेगा (क्योंकि यह मानता है कि आप कई छोटी गतिविधियों का उपयोग करेंगे, जिस तरह से वे अनुशंसा करते हैं)।

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

# 7। आपके आवेदन के लिए एकाधिक प्रविष्टि बिंदु होने से अधिक चुनौतीपूर्ण हो जाता है (उदाहरण के लिए, लॉन्चर में एकाधिक आइकन, मुख्य विजेट के अलावा कुछ गतिविधि से जोड़ने वाले ऐप विजेट, आदि का जवाब देना)।

यह गति अंतर अधिकांश उपयोगकर्ताओं, IMHO के लिए महत्वपूर्ण नहीं होंगे वर्तमान गतिविधि की सामग्री को बदलने के लिए की तुलना में किसी अन्य गतिविधि

सबसे आधुनिक Android उपकरणों के लिए शुरू करने के लिए सबसे तेज़ है।

हम केवल एक गतिविधि संदर्भ है, तो यह खोजने के लिए और स्मृति के साथ समस्याओं को हल करना अधिक आसान है सिवाय आप अभी भी की तुलना में "एक गतिविधि संदर्भ" अधिक है कि लीक

। याद रखें: आपकी गतिविधि, बड़ी या छोटी, अभी भी नष्ट हो गई है और कॉन्फ़िगरेशन परिवर्तनों पर पुनर्निर्मित है।

इस पैटर्न के बारे में आप क्या सोचते हैं?

Coase के "nature of the firm" theory कहते व्यवसायों का विस्तार है कि जब तक काम करने के लिए लेनदेन की लागत आंतरिक रूप से अन्य कंपनियों के एक ही बातें करते हैं होने के लिए लेनदेन की लागत की तुलना में अधिक हो जाते हैं।

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

+9

यदि मैं केवल एक से अधिक बार मतदान कर सकता हूं। –

+3

बहुत बढ़िया! हमारे पास यहां 'पसंद' या 'शेयर' बटन क्यों नहीं है !? :-P –

+0

आप कहते हैं कि हमें सूचीत्मकता, मानचित्रशीलता आदि का उपयोग करना है। मुझे एक दृश्य और एक मानचित्र को एक दृश्य में शामिल करने की आवश्यकता है। अगर मैं प्रीपेड गतिविधियों का उपयोग करना चाहता हूं तो मैं कभी ऐसा कैसे करूं? – Moulde

2

यह तब भी भयानक होगा जब नई कार्यक्षमता बाद में जोड़ा जाए। मुझे भी विश्वास नहीं है कि यह इतना तेज होगा कि उपयोगकर्ता नोटिस कर सकता है। छोटे टुकड़ों के रूप में घटकों को बदलने या बदलने के लिए आसान है निश्चित रूप से जाने का तरीका है।

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