2017-04-27 4 views
2

Wenn ich mich von der App abmelde, muss ich die Daten des Realms löschen, damit ich jede Klasse löschen kann, so gibt es eine Möglichkeit, alle Daten von Realm zu löschen, ohne all dies zu schreiben mRealm.clear (ClassName.class) für jede Struktur?Realm android Alle Daten löschen

Antwort

0

Versuchen Sie diese Lösung. Dies wird deine Realm-Datenbank löschen.

public static boolean deleteRealm(RealmConfiguration configuration) 

Dies ist eine Funktion in Realm, vom docs

+0

bereits versucht, alle Instanz geschlossen werden soll Ausnahme zeigt, und ich habe fast alle Realm Beispiel in onDestroy geschlossen() Ich habe Reich tatsächlich verwendet, um viele Orte in der App und hat versucht, alle zu schließen, aber immer noch diese Ausnahmen wird angezeigt –

+0

Verwendung der Ausnahmebehandlung für die gleichen. Buchungscode in der nächsten Antwort. –

+0

In meinem Fall verwende ich diese Methode realm.deleteAll(), aber es sollte die gleiche wie oben sein. Allerdings öffne ich Realm onStart und schließe onStop in Aktivität oder Fragment und schließe auch sofort im Hintergrundthread. – vsatkh

0

für Ihre erwähnten Ausnahme in den Kommentaren:

try (Realm realm = Realm.getInstance(realmConfig)) { 
    realm.beginTransaction(); 
    //your operations here 
    realm.commitTransaction(); 
} catch (Exception e) { 
    realm.cancelTransaction(); 
} 
0

Zuerst schließen Sie alle Reich-Instanzen und rufen dann deleteRealm

public static void removeAllData(Realm realm) 
{ 
    try { 
     realm.close(); 
     Realm.deleteRealm(realm.getConfiguration()); 
    } catch (Exception e) { 
     Log.e(TAG, "removeAllData:" + e.getMessage()); 
    } 
} 

Realm.Java

/** 
    * Deletes the Realm file specified by the given {@link RealmConfiguration} from the filesystem. 
    * All Realm instances must be closed before calling this method. 
    * 
    * @param configuration a {@link RealmConfiguration}. 
    * @return {@code false} if a file could not be deleted. The failing file will be logged. 
    * @throws IllegalStateException if not all realm instances are closed. 
    */ 
    public static boolean deleteRealm(RealmConfiguration configuration) { 
     return BaseRealm.deleteRealm(configuration); 
    } 
0

Der richtige Weg, um Ihre gesamte Realm (Schema) zu löschen ist zu verwenden:

Realm realm = Realm.getDefaultInstance(); 
realm.beginTransaction(); 

// delete all realm objects 
realm.deleteAll(); 

//commit realm changes 
realm.commitTransaction(); 

Bitte beachten Sie, dass dies alles Reich-Objekt löschen, die RealmObject-Klasse erweitert.

Original answer here

Verwandte Themen