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