W mojej aplikacji na Androida używam SQLiteOpenHelper do implementacji ContentProvider. Kwerendy, dodawanie, usuwanie operacji odbywa się przez ContentProvider.Kiedy należy wywołać metodę close() na SQLiteOpenHelper używanym przez ContentProvider
Ale w jednym z moich telefonów z Androidem (htc g13) znalazłem plik * .db-wal w katalogu/data/data/[nazwa pakietu]/bazy danych. Rozmiar pliku rośnie bardzo szybko podczas pracy z ContentProvider. Za dużo zajmował przestrzeń RAM użytkownika.
Zaleca się zamknięcie SQLiteOpenHelper w celu rozwiązania mojego problemu (jest to przydatne) w poście enter link description here.
Ale chcę znaleźć "miejsce", aby dodać metodę "close()", ponieważ nie używam bezpośrednio SQLiteOpenHelper (używając ContentProvider). Metoda query() w ContentProvider musi zwrócić kursor, a SQLiteDatabse powinno pozostać w stanie otwartym.
Jestem zdezorientowany, co mam teraz zrobić, aby zachować * .db-wal i używać ContentProvider normalnie?
To stary wątek, ale nadal istotny w Google, więc tutaj jest odniesienie do poprawnej odpowiedzi: http: // stackoverflow.com/questions/4547461/closing-the-database-in-a-contentprovider – saulobrito
Myślę, że to najlepsza odpowiedź, dziękuję. – cmoaciopm
Przeczytaj to świetne Objaśnienie i nie ma potrzeby zamykania bazy danych podczas korzystania z usługi contentProvider. Http://stackoverflow.com/questions/14002022/android-sq-lite-closed-exception/25379071#25379071 – Nepster