6

Piszę aplikację, która pozwala ludziom ustawić alarmy dla różnych zadań, które muszą wykonać. Mój obecny plan to przechowywanie wszystkich istotnych danych w bazie danych SQLite. W tym celu stworzyłem klasę, która rozszerza SQLiteOpenHelper i wypełnia ją metodami radzenia sobie ze wszystkimi CRUD, których oczekiwałbym musiał przyjąć. Wiedząc, że generalnie nie jest dobrym pomysłem wykonywanie całego przetwarzania w jednym wątku, sprawdził sposoby rozdzielenia pracy między wątkami i znalazł CursorLoader i LoaderManager, które wydawały się idealne, ponieważ były dostępne w Bibliotece zgodności Androida. Jednak LoaderManager wydaje się wymagać ContentProvider od tutorial in the documentation i naprawdę nie widziałem potrzeby robienia czegokolwiek z dostawcami treści, ponieważ nie planowałem zezwalania innym aplikacjom na dostęp do danych. Bez ContentProvider, nie wiem, w jaki sposób mam uzyskać Uri dla moich baz danych, które mają zostać wprowadzone do CursorLoader. Czy istnieje sposób, aby nadal używać mojej klasy, która rozszerza SQLiteOpenHelper i nadal implementować LoaderManager, aby umożliwić mi zachować wszystkie wypełniające ListFragmenty z moim kursor poza wątku interfejsu użytkownika?Mylić o CursorLoaders i używać ich z niestandardowym SQLiteOpenHelper

+0

Dziękuję za to pytanie. Wszystkie ich przykłady w dokumentacji pokazują tylko, jak używać kursorów z kontaktami, tak jakbyśmy wszyscy potrzebowali bazy danych tylko do tego ... – lenooh

Odpowiedz

4

Czy istnieje sposób dla mnie, aby zachować przy moim klasy, która rozciąga SQLiteOpenHelper i nadal realizować LoaderManager aby pozwolić mi zachować wszystkie zapełnianych ListFragments z moim kursorem off wątku UI?

Po prostu potrzebna jest inna implementacja Loader, która nie wymaga ContentProvider. Tak się składa, że ​​I wrote one of those.

+0

Wydaje się być solidne. Chociaż importowanie projektu z git spowodowało, że Eclipse zwrócił błąd kompilatora dotyczący adnotacji @Override w onSharedPreferenceChanged(). Mimo to wypróbuję to. – MowDownJoe

+0

@MowDownJoe: Musisz ustawić poziom zgodności Java na 1.6, zamiast 1.5, który jest teraz włączony. – CommonsWare

Powiązane problemy