ich eine Ausnahme habe assoziiert zu löschen, wenn i Realm.deleteRealm (config) nennen:Illegal: Es ist nicht erlaubt, die Datei mit einem offenen Realm
java.lang.IllegalStateException: Es ist nicht das Löschen erlaubt Datei mit einem offenen Realm verbunden. Denken Sie daran, zu schließen() alle Instanzen des Realm vor der Datei zu löschen
ich dies nach Realm.init einfach anrufen() in Application.onCreate, so gibt es keinen Grund, andere Instanzen geöffnet zu haben.
public void onCreate() {
Realm.init(this);
Realm realm;
RealmConfiguration config = getConfig();
try {
realm = Realm.getInstance(config); // Will migrate if needed
}
catch (RealmMigrationNeededException e)
{
Realm.deleteRealm(config);
realm = Realm.getInstance(config);
}
}
sah ich Thesen Themen, aber die Lösung nicht sehen:
https://github.com/realm/realm-java/issues/4552
https://github.com/realm/realm-java/issues/5416
Edit:
Ich glaube, mein Problem ist, wenn ich Anwendung neu starten Fehlgeschlagene Migration versuchen. In der Anwendung habe ich Instanzen geöffnet, aber nicht geschlossen, und kann sie nicht einfach schließen, Code ist zu komplex. Und wenn ich die Anwendung neu starte, um die Migrationsausnahme zu testen, indem ich ein Feld zu Modellen hinzufüge, werden möglicherweise einige Instanzen vom vorherigen Start geöffnet.
Edit 2:
Ich versuchte, diese Welt zu kommen zurück 3.0.0 (meine frühere Version), und ich habe nicht diesen Illegal. Ich verwende derzeit 4.2.0.
Vielleicht vermissen ich etwas in Changelog ..
Ja thx @beeender, du hast mir auf github geantwortet, ich habe vergessen diesen Stack zu schließen. https://github.com/realm/realm-java/issues/5570 – Lyofen