2015-12-24 14 views
5

Wie Standard Realm-Datenbank in Android löschen? Ich habe folgenden Code versucht, kann aber die Methode deleteRealmFile nicht auflösen.Android Realm Standard-Datenbank löschen

Methode 1:

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

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

Ich habe versucht, mit Konfiguration zu löschen.

Methode 2:

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

aber den Fehler gibt:

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. 

Antwort

2

Als Ausnahme beschrieben wird, müssen Sie alle Realm Instanzen schließen, die auf den spezifischen Bereich Datei verweisen.

Das bedeutet, wenn Sie

Realm realm = Realm.getInstance(config);

Sie haben das Reich zu schließen, bevor sie gelöscht werden genannt haben.

realm.close();

Und die Realm Instanzen basieren auf Referenzzähler, so stellen Sie sicher, jeder getInstance ein angepaßtes close hat.

Dies ist sehr wichtig, da sonst Speicherverluste auftreten können. Für einige Beispiele siehe .

6

Vor Realm.deleteRealm(realm.getConfiguration()); fügen Sie einfach realm.close() wie unten und es wirkt wie ein Zauber

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

dies nicht funktioniert nicht funktioniert, werfen java.lang.IllegalStateException: Es ist nicht erlaubt, die Datei mit einem offenen Realm zugeordnet zu löschen. Denken Sie daran, alle Instanzen des Realms zu schließen, bevor Sie die Datei löschen. – shekar