2012-05-01 12 views
9

दो साल पहले, खंड, मंशा सेवा, कर्सर लोडर आता है। क्या दृष्टिकोण अभी भी अद्यतित है, या कोई एंड्रॉइड रेस्ट क्लाइंट डिज़ाइन करने के लिए कोई बेहतर या परिपक्व पैटर्न है, विशेष रूप से विकल्प बी की तुलना करें (मुझे छवि पोस्ट करने का विशेषाधिकार नहीं है, इसके बजाय छवि this post से मिल सकती है) ।क्या Google io 2010 में बाकी क्लाइंट ऐप डिज़ाइन दृष्टिकोण अभी भी अद्यतित है?

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

    आप में से जो लोग google io 2011 iosched app source code में digged के लिए
  • , आप सेवा सहायक के रूप में HomeActivity में स्थिर वर्ग SyncStatusUpdaterFragment पर विचार करेगी, हालांकि यह SyncService प्रारंभ नहीं हो सका है, लेकिन यह कॉल करने के लिए से वापस सुनने है सिंक सेवा और UI के रीफ्रेश ट्रिगर करें। तो क्या इसे विर्जिल डॉबंजांची के दृष्टिकोण के रूप में देखा जा सकता है?

सेवा, मंशा सेवा, asyncTask और धागा आता है। मेरी राय में, इरादा सेवा दूरस्थ सर्वर से डेटा के मेगा पैक के सिंक के लिए उपयुक्त है। यही कारण है कि वे इसे iosched में उपयोग करते हैं। लेकिन आम परिदृश्य यह है कि आइटम का केवल एक हिस्सा दूरस्थ सर्वर के साथ सिंक्रनाइज़ किया जाएगा। तो इरादा सेवा बहुत भारी है। यहां तक ​​कि सेवा दृष्टिकोण भी। क्या हम इस प्रकार के कार्य को पूरा करने के लिए सामग्री प्रदाता या उस के कुछ घटक में asyncTask या थ्रेड का उपयोग कर सकते हैं। या सेवा का उपयोग करने के लिए कोई ठोस कारण है, और सेवा सहायक सेवा-प्रोसेसर पथ से गुजरना है। मैं एक गंभीर आवेदन के बारे में बात कर रहा हूँ।

तो आप क्या राय रखते हैं?

+0

मैं भी Android के लिए/बाकी विकास नई आपके सवाल का जवाब देने में सक्षम होना चाहता हूँ , और मुझे अपने ऐप के लिए एक अच्छी वास्तुकला के साथ आने वाली कठिनाइयों का सामना करना पड़ रहा है, लेकिन हो सकता है कि निम्न लिंक मदद कर सके (वहां दो भाग भी हैं): http://neilgoodman.net/2011/12/26/modern-techniques-for - कार्यान्वयन-आराम-क्लाइंट-ऑन-एंड्रॉइड -4-0-और-नीचे-भाग -1/ – yniq

उत्तर

2

तो यह सुरुचिपूर्ण एक सामग्री प्रदाता से एक गतिविधि शुरू करने के लिए, या यह शीर्ष पर गतिविधि से आरंभ किया जाना चाहिए।

आप कभी नहीं कभी सामग्री प्रदाता से एक गतिविधि की पहल करेंगे। सबकुछ आपकी गतिविधि से शुरू होना चाहिए, भले ही यह असिनकटास्क, सेवा, या सामग्री प्रदाता अनुरोध है ...

AsyncTasks आमतौर पर एक खराब विकल्प होते हैं। जब कॉन्फ़िगरेशन परिवर्तनों से निपटने की बात आती है तो वे आसानी से त्रुटिपूर्ण होते हैं (यानी स्क्रीन अभिविन्यास परिवर्तन)। लोडर इसका समाधान हैं, लेकिन मुश्किल हिस्सा आपके नेटवर्क कॉल के साथ एक साथ लपेट रहा है। एक समाधान कस्टम लोडर से नेटवर्क कॉल बनाने के लिए है (AsyncTaskLoader subclassing)।

हालांकि, मेरे मामले में, मैंने 2010 की Google आईओ प्रस्तुति का पालन किया। सेवा ऑब्जेक्ट में सर्वर के अनुरोधों को प्रबंधित करने के लिए क्लास, सर्विसहेल्पर बनाया गया है (जो नेटवर्क क्वेरी करने के लिए थ्रेड लॉन्च करता है)। ServiceHelper परिणाम रिसीवर का प्रबंधन करता है जिसे कॉलिंग गतिविधि से बनाया जा सकता है। यह गतिविधि को सेवा अनुरोध से ईवेंट सुनने की अनुमति देता है जैसे कि जब क्वेरी शुरू होती है और समाप्त होती है (या जब यह त्रुटियां होती है)। ये थ्रेड उनके नेटवर्क प्रश्नों को कॉल करेंगे और फिर परिणामी डेटा को ContentProvider में संग्रहीत करेंगे (कैशिंग के लिए और यदि आवश्यक हो तो कई क्रियाओं में उपयोग करने के लिए)।

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

तो हाँ, मुझे लगता है कि 2010 प्रस्तुति अभी भी मान्य है .. उसकी प्रस्तुति के अस्पष्ट क्षेत्रों का एक बहुत वहाँ थे और आज भी जारी है। आप अभी भी एक डिजाइन है कि आपका ऐप

उम्मीद है कि के लिए काम करता बाहर काम करना होगा, मेरे विचारों को आप आरंभ करने में मदद मिलेगी ..

+0

आपने डेटाबेस में संसाधनों के लिए झंडे कैसे काम किए? प्रस्तुतिकरण करने वाला व्यक्ति उस विषय पर अस्पष्ट है और झंडे के लिए अर्थ बदलता रहता है। –

+0

ओह, इस देर से जवाब देने के लिए मेरी माफ़ी, मैंने अभी इसे देखा है। यह थोड़ी देर हो गया है क्योंकि मैंने वीडियो देखा है, लेकिन मुझे संदेह है कि आप यह निर्धारित करने के लिए झंडे के बारे में बात कर रहे हैं कि डेटा अभी भी वैध है या नहीं? मुझे लगता है कि आप जिस एपीआई का उपयोग कर रहे हैं और आपके पास कैश नीति पर निर्भर करेगा। – kwazi

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