2015-12-24 6 views
5

एंड्रॉइड में डिफ़ॉल्ट वास्तविक डेटाबेस को कैसे साफ़ करें? मैंने कोड का पालन करने की कोशिश की लेकिन विधि हटाने के लिए हल नहीं कर सकता है।एंड्रॉइड रीयल डिफ़ॉल्ट डेटाबेस स्पष्ट

विधि 1:

try { 
    Realm.deleteRealmFile(context); 
    //Realm file has been deleted. 

} catch (Exception ex){ 
    ex.printStackTrace(); 
    //No Realm file to remove. 
} 

मैं विन्यास का उपयोग कर नष्ट करने के लिए कोशिश की।

विधि 2:

try { 
    Realm.deleteRealm(realm.getConfiguration()); 
    //Realm file has been deleted. 
} catch (Exception ex){ 
    ex.printStackTrace(); 
    //No Realm file to remove. 
} 

लेकिन है त्रुटि देता है:

java.lang.IllegalStateException: It's not allowed to delete the file associated with an open Realm. Remember to close() all the instances of the Realm before deleting its file. 

उत्तर

2

अपवाद बताया गया है, आप सभी क्षेत्र उदाहरण हैं जिनमें विशिष्ट दायरे फ़ाइल को संदर्भित बंद करने के लिए किया है।

, यानी यदि

Realm realm = Realm.getInstance(config);

आप क्षेत्र को बंद करने के लिए है कहा जाता है से पहले इसे हटा दें।

realm.close();

और क्षेत्र उदाहरणों संदर्भ काउंटर पर आधारित हैं, अतः यह सुनिश्चित करें कि हर getInstance एक मिलान close है।

यह बहुत महत्वपूर्ण है, अन्यथा स्मृति रिसाव हो सकता है। कुछ उदाहरणों के लिए https://realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instances देखें।

6

Realm.deleteRealm(realm.getConfiguration()); से पहले बस नीचे की तरह realm.close() जोड़ सकते हैं और यह एक आकर्षण

try { 
     realm.close() 
     Realm.deleteRealm(realm.getConfiguration()); 
       //Realm file has been deleted. 
} catch (Exception ex){ 
       ex.printStackTrace(); 
       //No Realm file to remove. 
} 
+1

यह नहीं काम कर काम नहीं कर रहा तरह काम करता है, java.lang.IllegalStateException फेंकने: यह एक खुला क्षेत्र के साथ जुड़े फ़ाइल को नष्ट करने के लिए अनुमति नहीं है। अपनी फ़ाइल को हटाने से पहले क्षेत्र के सभी उदाहरणों को बंद करना याद रखें। – shekar

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