2012-04-13 17 views
19

Zaktualizowałem mój Android SDK do najnowszej wersji, a teraz jest napisane, że startManagingCursor() to deprecated. Potrzebuję pomocy, aby zaktualizować mój kod, aby użyć nowego CursorLoader.Jak (właściwie) przejść od StartManagingCursor do CursorLoader?

private void fillData() { 
    Cursor notesCursor = mDbHelper.fetchAllNotes(); 
    startManagingCursor(notesCursor); 
    NoteAdapter notes = new NoteAdapter(this, R.layout.notes_row, notesCursor); 
    setListAdapter(notes); 
} 

Więc startManagingCursor() jest stary, co będzie nowy kod wyglądać, gdyby to było przetłumaczone?

+1

CursorLoader działa w adition do ContentProvider ... Więc nie jest możliwe "przetłumaczenie" kodu rhis ... – Selvin

+0

http://www.androiddesignpatterns.com/2012/07/loaders-and-loadermanager-background. html – user1422551

+0

Dobrze jest pamiętać o tej odpowiedzi na metodę amortyzacji. Okazuje się, że działa na głównym wątku, który spowalnia rzeczy, dlatego został amortyzowany. [link] (http://stackoverflow.com/questions/19651680/cursorloader-with-startmanagingcursor) – Azurespot

Odpowiedz

16

Po pierwsze, startManagingCursor() nadal działa. Nie jest idealny, ponieważ wykonuje operacje wejścia/wyjścia bazy danych na głównym wątku aplikacji. W systemie Android "przestarzałe" oznacza ogólnie "mamy coś, co według nas jest lepsze, niż sugerujemy, którego używasz". Jeśli ma to sens w cyklu tworzenia aplikacji, warto rozważyć migrację.

Po drugie, jak zauważył Selvin, SDK zapewnia tylko implementację Loader dla ContentProvider. Mam bezpośrednio a project that offers a Loader for SQLite.

Po trzecie, naprawdę nie ma prostego "tłumaczenia" kodu. Ramy Loader są asynchroniczne i sterowane zdarzeniami, natomiast twój kod nie.

Ogólnie rzecz biorąc, Loader byłby odpowiedzialny za pobieranie notatki i chcesz zapełnić ListView w onLoadFinished(), gdy są dostarczane do Cursor z Loader.

+2

Aby dodać tę myśl tutaj, jeśli budujesz NOWY kod, nigdy nie powinieneś używać przestarzałych API. –

+22

@EthanAllen: Nonsens. Na początek niemożliwe jest, jeśli chcesz obsługiwać starsze urządzenia. Na przykład nie można utworzyć właściwości "PreferenceActivity", która działa na poziomie interfejsu API 10 i niższym bez użycia nieużywanych metod. Ostrzeżenia o przestojach należy rozpatrywać osobno dla każdego przypadku. * Ogólnie * jeśli chcesz, unikaj przestarzałych metod. Ale "nigdy" nie przesadza w tej sprawie. – CommonsWare

+0

doskonała analiza. UPVOTED! –

Powiązane problemy