Aby wdrożyć dostęp do bazy danych w mojej aplikacji następnie Lars Vogel tutorial, ale jestem bardzo pomylić o kilka rzeczy ...Kilka pytań o SQLite kursorów bazy danych w Android
1) każdym razem połączenie jest wykonane do fetchTodo
nowy kursor zostanie utworzony i zwrócony. Pozostawienie poprzedniego kursora dla śmieciarza. Tak więc, jeśli nie używam startManagingCursor
lub nawet CursorLoader
, czy powinienem zadzwonić do .close()
na kursorze, gdy skończę? Poza fetchTodo
zakresie oczywiście, przykład:
Cursor cursor = mNotesAdapter.fetchTodo();
// do something...
cursor.close();
Skończyłam z tym kursorem a nowy zostanie utworzony na następny pobrać, należy zamknąć go w ten sposób wtedy czy mam zostawić to dla śmieciarza ? Chociaż myślę, że mówię o 2 rzeczach zupełnie różnych ... Wskaż, czy powinienem zamknąć to tak, jak w powyższym przykładzie, czy nie?
2)Cursor
ma także sposób .deactivate()
i dokumentacja mówi, że wykorzystuje mniej zasobów (ponad aktywnych kursorów). Kiedy dokładnie powinienem tego użyć? Na przykład w mojej aplikacji mam ListActivity
, który jest zapełniany przez SimpleCursorAdapter
(inicjalizacja kodu jest nazywana tylko raz). Używany kursor jest zmienną składową klasy, ponieważ potrzebuję jej poza metodą wypełniającą listę. Potrzebuję go do żądania bazy danych, gdy coś zostanie z niej usunięte. Ale dopóki rekord nie zostanie usunięty, co jest działaniem użytkownika i może trochę potrwać, czy powinienem w międzyczasie wyłączyć kursor? Powoduje, że będzie ponownie aktywny, gdy ponownie zadzwonię pod numer .requery()
. Lub SimpleCursorAdapter
przestanie działać, ponieważ kursor nie jest aktywny?
EDIT: Właśnie ten jeden przetestowane i okazało się, że nie mogę zadzwonić deactivate()
po skonfigurowaniu adapter kursora. Lista będzie pusta, jeśli kursor nie jest aktywny, więc musi pozostać aktywny tak długo, jak wyświetla się ListActivity. Koniec końców, powinniśmy po prostu pozwolić, aby StartManagingCursor
go obsłużył. Lub nowy CursorLoader
.
3) wiem, że startManagingCursor
/stopManagingCursor
są przestarzałe, ale nie jestem kierowania Honeycomb (przynajmniej na razie) i nie chcemy mieć do czynienia z nowym CursorLoader
teraz. Ale w powyższym samouczku startManagingCursor
jest używany wszędzie, ale stopManagingCursor
nigdy nie jest wywoływany raz. Dlaczego nie? Czy Android radzi sobie z tym w swój własny sposób? Każda sytuacja, którą powinienem nazwać stopManagingCursor
?
# 1 Całkowicie źle zinterpretowałem moje myśli na temat tego pytania, będę musiał je przeformułować ... # 2 Tak, miałem na myśli "dezaktywować" (literówka). Naprawdę nie mogę znaleźć żadnej dobrej dokumentacji dotyczącej używania 'LoaderManager', nawet tutaj, w pytaniach SO.# 3 Rozumiem, ale jeśli nie powinienem używać 'stopManagingCursor', jeśli wykonałem połączenie z' startManagingCursor', dlaczego ta metoda istnieje w ogóle? –
Właśnie przepisałem całe pytanie # 1 @philipp, jeśli mógłbyś spojrzeć ... –
Również znalazłem odpowiedź na # 2; pytanie ponownie edytowane z odpowiedzią. –