द्वारा उपयोग किए गए SQLiteOpenHelper पर क्लोज़() को कब कॉल करना चाहिए, मेरे एंड्रॉइड ऐप में, मैं ContentProvider लागू करने के लिए SQLiteOpenHelper का उपयोग करता हूं। कंट्रीप्रोवाइडर के माध्यम से क्वेरी, जोड़, हटाएं ऑपरेशन सभी हैं।मुझे ContentProvider
लेकिन मेरे एंड्रॉइड फोन (एचटीसी जी 13) में से एक में, मुझे निर्देशिका/डेटा/डेटा/[पैकेज नाम]/डेटाबेस में * .db-wal फ़ाइल मिली। और ContentProvider के साथ परिचालन करते समय फ़ाइल का आकार बहुत तेज हो जाता है। यह उपयोगकर्ता रैम स्पेस पर बहुत अधिक कब्जा कर लिया।
पोस्ट enter link description here में मेरी समस्या (यह उपयोगी है) को हल करने के लिए SQLiteOpenHelper को बंद करने की अनुशंसा की जाती है।
लेकिन मैं "करीबी()" विधि जोड़ने के लिए "स्थान" ढूंढना चाहता हूं क्योंकि मैं सीधे SQLiteOpenHelper (ContentProvider के माध्यम से उपयोग नहीं कर रहा हूं) का उपयोग नहीं कर रहा हूं। ContentProvider में क्वेरी() विधि को कर्सर वापस करना होगा, और SQLiteDatabse को खुली स्थिति में रहना चाहिए।
मैं उलझन में हूं, मैं अब * डीडी-वाल को रखने के लिए क्या दिखाता हूं और सामान्य रूप से ContentProvider का उपयोग करता हूं?
1) आपका आवेदन खत्म (जैसे OnDestroy में प्रवेश()) सुनिश्चित करें कि आप SQLiteDatabase का डाटाबेस उदाहरणों और SQLiteOpenHelpers (मॉडल यदि का उपयोग करके सभी कर्सर बंद करते हैं, कर (कनेक्शन:
यह पुराना धागा है लेकिन अभी भी Google पर प्रासंगिक है, इसलिए यहां सही उत्तर का संदर्भ दिया गया है: http: // stackoverflow।कॉम/प्रश्न/4547461/क्लोजिंग-द-डेटाबेस-इन-ए-कंटेंटप्रोवाइडर – saulobrito
मुझे लगता है कि यह सबसे अच्छा जवाब है, धन्यवाद। – cmoaciopm
इस महान स्पष्टीकरण को पढ़ें और सामग्री प्रदाता का उपयोग करते समय डीबी को बंद करने की कोई आवश्यकता नहीं है .. http://stackoverflow.com/questions/14002022/android-sq-lite-closed-exception/25379071#25379071 – Nepster