2012-02-20 12 views
12

अभी मेरे एप्लिकेशन के लिए जब मैं अपने ContentProvider के लिए डेटा बदलना चाहता हूं, तो मैं केवल सम्मिलित करने, अपडेट करने और हटाने के ContentResolver विधियों का उपयोग करता हूं। लेकिन एंड्रॉइड एसडीके में कुछ नमूना परियोजनाओं पर, मुझे लगता है कि वे ApplyBatch या BulkInsert का उपयोग करते हैं। इसलिए मैं जानना चाहता हूं कि इन तरीकों में से किसी एक का उपयोग कब करें और अब मैं जो कर रहा हूं उसके बारे में उनका उपयोग करने के क्या फायदे हैं।एंड्रॉइड जब सामग्री सामग्री का उपयोग करने के लिए लागू होता है बैच या बल्कइन्सर्ट

उत्तर

12

सामग्री प्रदाता के पास पर्यवेक्षक हो सकते हैं, जैसे कर्सर, जिन्हें हर बार एक सम्मिलित, अद्यतन या हटाया जाता है, अधिसूचित किया जाता है। आमतौर पर यूआई को अपडेट करने के लिए कुछ काम किए जाते हैं। जब आपके पास एक ही समय में लागू होने के लिए कई संचालन होते हैं, तो इसके परिणामस्वरूप पर्यवेक्षकों द्वारा दोहराए गए अपडेट हो सकते हैं। आम तौर पर, यदि आपके पास प्रदर्शन करने के लिए एकाधिक डालने, अद्यतन या हटाना है, तो उन्हें थोक में करने के लिए और अधिक कुशल है।

कहा जा रहा है कि डिफ़ॉल्ट ContentProvider.applyBatch() विधि बस बैच पर फिर से चलती है और किसी भी तरह से उन्हें अलग-अलग लागू करती है। ContentProvider के लेखक को इसे ओवरराइड करना होगा और बैच ऑपरेशंस का लाभ उठाने के लिए इसे अधिक कुशलतापूर्वक लागू करना होगा।

5

जेस्मिथ ने जो कहा है, उसके बारे में अधिक जानकारी जोड़ने के लिए, यह है कि लागू होने पर बल्कइन्सर्ट लेनदेन नहीं होगा, इसलिए यदि आप यह सुनिश्चित करना चाहते हैं कि लेनदेन के तरीके में संचालन का एक समूह लागू किया गया है, तो लागू बैच का उपयोग करें।

+0

यदि आप अपनी खुद की 'ContentProvider' कक्षा बना रहे हैं, तो आप 'bulkInsert' को ओवरराइड कर सकते हैं ताकि लेनदेन का उपयोग किया जा सके। –

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