android.Datenbank.CursorWindowAllocationException beim verschieben eines Cursor
Ich bin eine SQLite-Datenbank, und ich bekomme regelmäßig runtime-Fehler kann ich nicht finden den Ursprung. Nach einer Abfrage, die ich verwenden moveToFirst
zu zeigen auf den ersten Datensatz abgerufen und dies löst manchmal eine android.database.CursorWindowAllocationException
Ausnahme. Hinzugefügt, um diese Ausnahme ist der folgende Satz : "Cursor-Fenster Zuordnung von 2048kb fehlgeschlagen.# offene Cursor=736 (#Cursor opendby dieser proc=736)".
In der Android-Dokumentation, ich habe nicht gefunden was im Zusammenhang mit dieser Ausnahme noch. Wer weiß, es ist Ursache und einen Weg es zu vermeiden?
- zeigen Sie Ihre log-Katze
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Fehler wird fast immer durch nicht das schließen eines Cursors auf, wenn es fertig ist mit. Jedes mal, wenn Sie öffnen einen cursor, Speicher erforderlich ist, um die Zuordnung der Daten, der cursor steht und, dass der Speicher nicht freigegeben werden, bis der cursor geschlossen wird. Es gibt eine Grenze für die Menge des verfügbaren Speichers für diesen Zweck, so dass, wenn der Cursor nicht geschlossen werden und eine Anwendung weiter, um neue zu öffnen, wird dieser Fehler wird wahrscheinlich auftreten, irgendwann.
Empfehle ich Ihnen, überprüfen Sie Ihren code, um sicherzustellen, dass alle Cursor erstellt werden geschlossen an einem gewissen Punkt. Auch aufpassen mit den code, öffnet sich ein cursor innerhalb einer loop - deine Fehlermeldung sagt 'open Cursor=736' das deutet auf eine Menge von cursor-Aktivität innerhalb einer Schleife von einigen Sortieren.
Open Cursors=2
, und ich nur die Abfrage für einen neuen cursor, wenn die alten Berichte von falschenisClosed()
... das ist komisch dann.Open Cursors =1
. Irgendwelche Tipps von jemandem?OutOfMemoryError
?