Mam trudności z optymalizacją kompatybilności wstecznej, złożonością i sprawdzonymi metodami obsługi baz danych SQLite w systemie Android. Znalazłem dwa nie przestarzałe sposoby zarządzania bazami danych SQLite oraz kursory:Obsługa tabel i kursorów SQLite w systemie Android
- bezpośrednio przez
android.database.sqlite
ContentProvider
,CursorLoader
iLoaderManager
próbuję zaprojektować przyszłej realizacji w bazie dowód. Oznacza to, że chciałbym wdrożyć najlepszą praktykę promowaną przez Google. I found a tutorial po implementacji ContentProvider
i LoaderManager
.
Jeśli podążam za propozycjami Larsa Vogelsa, mój kod zostaje wysadzony duplikacjami i niepotrzebną złożonością. Ma to sens w przypadku niektórych tabel w mojej bazie danych. Ale nie ma sensu implementować tego dla tabeli mapowania z trzema polami (na przykład). Ponadto mam problemy z ActionbarSherlock
i interfejsem oddzwaniania LoaderManager
(istnieje rozwiązanie, ale podwoiłoby to moje klasy obsługi danych).
Bezpośrednia obsługa bazy danych i kursorów za pośrednictwem android.database.sqlite
powoduje problemy z zarządzaniem zasobami (zamykanie kursorów!) I sprawia, że jestem odpowiedzialny za obsługę zadań.
Moje pytania:
Jak się obchodzić bazy danych SQLite w Android?
Kiedy idziesz dalej i wdrażasz ContentProvider
i LoaderManager
?
Jak zachować zgodność z poprzednimi wersjami?
Moje obecne podejście:
Stworzyłem klasę, która oddziela bazy danych we/wy (poprzez android.database.sqlite
) z działalności. Wszystkie metody otwierają i zamykają kursory, których używają podczas wykonywania (poza moimi działaniami) i zwracają obiekty lub dane w razie potrzeby (zamiast kursora). Operacje we/wy są wykonywane w AsyncTasks
. To podejście wydaje się bardzo przestarzałe.
Nie mam odpowiedzi na wszystkie te rzeczy, ale wiem, że biblioteka pomocy działa z ładowarkami aż do wersji 2.1. –