Ich habe versucht, meine Anwendung in StrictMode auszuführen, um nach versteckten Problemen zu suchen, die sich möglicherweise eingeschlichen haben. Ein Problem, über das ich gestolpert bin, ist das, was bei Verwendung von ContentResolver ein falsches Ergebnis von "Leaked DatabaseConections" zu sein scheint.
Nach einigen Experimenten wurde das Problem auf die folgenden 2 Codezeilen vereinfacht:
%Vor%Die obigen 2 Zeilen generieren die folgende StrictMode-Verletzung:
%Vor%Ich gehe davon aus, dass dies etwas Spezifisches für die Tatsache ist, dass der Cursor von einem contentProvider zurückgegeben wurde (also ist es kein direkter SQLite-Cursor).
Hat irgendjemand einen Einblick, ob das tatsächlich falsch positiv ist oder es wirklich einen undichten Cursor gibt.
Ich denke, ich kann erklären, wo das Problem liegt. Wenn Sie Datenbank abfragen, können Sie eine Ausnahme erhalten. Daher wird ein Cursor erstellt. C.close () wird nicht aufgerufen, da eine Ausnahme vorliegt. Daher müssen Sie die Erstellung des Cursors in den try catch-Block setzen und den curson im finally-Block schließen.
Tags und Links android strictmode