2016-06-06 9 views
8

में क्षेत्र में डेटाबेस को साफ़ करने मैं पूरी डेटाबेस साफ़ करना चाहते हैं जब कोई उपयोगकर्ता प्रेस लॉगआउट बटन और एक नया डेटा लोड किसी अन्य उपयोगकर्ता login.Iकैसे एंड्रॉयड

try { 
     Realm.deleteRealm(realmConfiguration); 
    } catch (Exception ex){ 
     throw ex; 
    } 

इसके अलावा

try { 
     Realm.deleteRealmFile(getActivity()); 
     //Realm file has been deleted. 
    } catch (Exception ex){ 
     ex.printStackTrace(); 
     //No Realm file to remove. 
    } 
की तरह कई समाधान की कोशिश की जब

लेकिन कोड में से कोई भी काम नहीं करता है। अग्रिम धन्यवाद।

उत्तर

21

जब आप Realm.deleteRealm() पर कॉल करते हैं, तो आपको यह सुनिश्चित करना होगा कि सभी दायरे के उदाहरण बंद हैं, अन्यथा कुछ भी हटाए बिना अपवाद फेंक दिया जाएगा। इस विधि को कॉल करके, सभी दायरे फ़ाइलों को हटा दिया जाता है, जिसका अर्थ है कि सभी ऑब्जेक्ट्स & स्कीमा चले गए हैं। सभी अपवादों को पकड़ना किसी भी सामान्य मामलों के लिए एक बुरा अभ्यास है।

या आप एक लेनदेन ब्लॉक में Realm.delelteAll() पर कॉल कर सकते हैं। इसके लिए सभी दायरे के उदाहरण बंद होने की आवश्यकता नहीं है। यह स्कीमा को साफ़ किए बिना दायरे में सभी वस्तुओं को हटा देगा। और फिर, सभी अपवादों को पकड़ो मत।

+0

क्या दोनों विधियां 'RealmConfiguration # प्रारंभिक डेटा()' द्वारा प्रदान किए गए डेटा को भी साफ़ करती हैं? – Heinrich

+0

हां, वे दोनों इसे साफ़ करते हैं। नवीनतम संस्करण 4.3 के लिए – beeender

+1

आपको वास्तविक कॉन्फ़िगरेशन की आपूर्ति करने की आवश्यकता है साथ ही उदा। Realm.deleteRealm (Realm.getDefaultConfiguration()) – Killer

0

यदि आप सुनिश्चित हैं कि कोई अन्य डेटाबेस नहीं है जिसे आप सहेजना चाहते हैं, तो आप अन्य सभी डेटा भी हटा सकते हैं। आप इस उत्तर का पालन कर सकते हैं Clear Application's Data Programmatically