Ich möchte meine Realm-Instanz in executeTransactionAsync
nach Abschluss der Ausführung schließen. Der Grund dafür ist, dass der Hauptthread meiner Anwendungen weiterhin eingefroren wird. Ich denke, der Grund dafür ist, dass die Hintergrund-Realm-Instanz nach Abschluss der Ausführung nicht geschlossen wird. Siehe meinen Code unten:Schließen Realm-Instanz nach Abschluss der Ausführung
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// Execute realm code
realm.copyToRealmOrUpdate(myData);
// Can I close the realm instance here without getting an
// error? realm.close(); causes an error.
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
Log.i("CB", "success");
// looks like I cannot access the execute Realm
// instance here.
// Closing realm.getDefaultInstance does not change my issue
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
Log.i("CB", "error - " + error.getMessage());
}
});
}
Bitte beachten Sie meine Kommentare. Mein Anwendungsbildschirm wird nur schwarz. Die Ausführung wird erfolgreich abgeschlossen und onSuccess()
wird aufgerufen, aber ich kann nicht auf die Realm-Instanz execute
zugreifen, um sie von hier aus zu schließen.
Haben Sie Vorschläge, was ich ausprobieren kann? Mache ich etwas falsch?
Vielen Dank im Voraus.
EDIT
07-19 11:43:42.379 8146-8146/com.shortterminsurance.shortterm I/CB: success
07-19 11:43:43.258 8146-8152/com.shortterminsurance.shortterm W/art: Suspending all threads took: 33.234ms
07-19 11:43:43.266 8146-8156/com.shortterminsurance.shortterm I/art: Background partial concurrent mark sweep GC freed 476307(17MB) AllocSpace objects, 512(10MB) LOS objects, 40% free, 33MB/55MB, paused 7.261ms total 163.497ms
07-19 11:43:44.131 8146-8156/com.shortterminsurance.shortterm I/art: Background sticky concurrent mark sweep GC freed 408160(9MB) AllocSpace objects, 459(15MB) LOS objects, 35% free, 35MB/55MB, paused 10.287ms total 147.823ms
07-19 11:43:44.834 8146-8152/com.shortterminsurance.shortterm W/art: Suspending all threads took: 103.676ms
07-19 11:43:44.848 8146-8156/com.shortterminsurance.shortterm W/art: Suspending all threads took: 13.424ms
Das ist mein logcat nach meiner onSuccess aufgerufen wird. Ich denke, die Hintergrundinstanz von Realm in execute
läuft aus irgendeinem Grund weiter :(.
Warten Sie, welche Realm-Instanz Sie schließen möchten? Was meinen Sie mit "Hintergrundinstanz"? –
@TimCastelijns Ich möchte die Realm-Instanz in 'execute' schließen. Will schnell meine Frage mit einigen weiteren Informationen bearbeiten – Lunchbox
Meinst du die hier übergebene Instanz 'public void execute (Realm Realm) {'? –