13

नया Android वास्तुकला अवयव के साथ एंड्रॉयड वास्तुकला के घटकों 17.एमवीपी

तो हम वास्तुकला के घटकों और MVVM साथ एमवीपी का उपयोग करना चाहिए गूगल आईओ पर रिहा कर दिया?

गीथब पर Google नमूने में, उन्होंने एमवीवीएम मॉडल का उपयोग किया है। Google Sample

+0

सरल उत्तर "यह निर्भर करता है" - एमवीवीएम मानक एमवीसी आर्किटेक्चर की तुलना में उच्च सीखने की वक्र है लेकिन टेस्टेबिलिटी के मामले में लाभ प्रदान करता है। हालांकि, इस तरह का सवाल वास्तव में StackOverflow पर विषय पर नहीं है। कृपया [सहायता/विषय-वस्तु] –

उत्तर

9

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

नहीं विचार नुस्खे हैं।

हालांकि, तीन मुख्य घटक (Room, ViewModel, ViewData) विस्तृत श्रृंखला के उपयोग के साथ विकसित किए गए हैं लेकिन किसी भी विशिष्ट पैटर्न पर ध्यान केंद्रित नहीं करते हैं।
उदाहरण के लिए,

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

अंत में, अपने प्रश्न के लिए।

तो क्या हमें आर्किटेक्चर घटकों के साथ एमवीपी का उपयोग करना चाहिए?

उत्तर है "यह एंड्रॉइड फ्रेमवर्क का अच्छा हिस्सा है, तो क्यों नहीं"।

अपडेट किया गया:
आप देखना चाहते हैं कि एक एमवीपी पैटर्न परियोजना नई वास्तुकला अवयव के साथ काम करता चाहते हैं, मेरी repository on Github चेकआउट करें। जिसमें मैं जीवन के लिए जागरूक प्रेजेंटर बनाने के लिए स्थानीय दृढ़ता और लाइफसाइकल के लिए कक्ष का उपयोग करके पिछले एमवीपी मॉडल को बढ़ाता हूं।

+0

देखें, प्रस्तुति गतिविधि पुनर्विक्रय या कॉन्फ़िगरेशन परिवर्तनों में जीवित रहने के लिए आप व्यूमोडेल आर्किटेक्चर घटक का उपयोग क्यों नहीं करते? इम्हो यह आपको बहुत फायदे देगा: मैंने इस जिथब रेपो पर एक नज़र डाली और इससे मुझे बहुत मदद मिली -> https://github.com/armcha/MVP- आर्किटेक्चर- कॉम्पोनेंट्स –

+0

आपको बनाने के लिए व्यूमोडेल का उपयोग करने की आवश्यकता नहीं है गतिविधि जीवन चक्र के बारे में प्रस्तुतकर्ता प्रस्तुतकर्ता। बस लाइफसाइकिल ऑब्सर्वर लागू करता है, उदाहरण के लिए: https://github.com/quangctkm9207/mvp-android-arch-component/blob/master/app/src/main/java/com/quangnguyen/stackoverflowclient/ui/questions/QuestionsPresenter। जावा –

+0

मैं प्रस्तुतकर्ता जीवनशैली को जागरूक करने के बारे में बात नहीं कर रहा था .. मैं व्यूमोडल्स की विशिष्टता के बारे में बात कर रहा था जो गतिविधि recreations से बचने के लिए है .. तो आपको SaveInstanceState ,RestoreInstanceState पर और उन सभी चीजों को लागू करने की आवश्यकता नहीं है :) –

4

मैं वर्तमान में एक टेम्पलेट परियोजना गूगल वास्तुकला के घटकों (कक्ष, LiveData) के साथ एमवीपी पैटर्न का उपयोग करता है के निर्माण कर रहा हूँ, और Realm के संस्करण मिश्रण करने की तुलना और LiveData:

https://github.com/duyp/mvp-template

मैं से कुछ लगता है गूगल वास्तुकला अवयव एमवीपी पैटर्न, MVVM के लिए न केवल के साथ संगत कर रहे हैं: डी

आप 2 following branches की जाँच कर सकते हैं:

  • realm_livedata: क्षेत्र और LiveData साथ एमवीपी

  • room_livedata: कमरे का हठ पुस्तकालय और LiveData साथ एमवीपी

यह बहुत Google sample परियोजना की तुलना में अधिक जटिल है (मैं इस्तेमाल किया Dagger 2, RxAndroid, रेट्रोफिट, Gson, और स्वच्छ वास्तुकला) आशा है कि आपको अपने काम के लिए बेहतर समाधान मिलेगा। यदि कोई प्रश्न या सुझाव है, तो आप my github project पर टिप्पणियां या समस्याएं छोड़ सकते हैं। https://github.com/duyp/mvvm-template

मुबारक कोडिंग:

मैं भी एक परियोजना क्षेत्र के साथ नया गूगल वास्तुकला घटकों के साथ MVVM का उपयोग कर, डैगर 2, लाइव डेटा बनाया!

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