2010-04-07 16 views

Odpowiedz

72

managedQuery() użyje zapytanie ContentResolver za(). Różnica polega że z managedQuery() aktywność będzie zachować odniesienie do kursor i zamknąć go w razie potrzeby (w onDestroy() na przykład). Jeśli zrobić query() siebie, będzie trzeba zarządzać Kursor jako wrażliwego zasobu w . Jeśli zapomnisz, na przykład, do close() nim w onDestroy(), będzie przeciekać bazowego zasobów (logcat ostrzeże Cię temat.)

Aby zapytać dostawcy treści, można użyć metody ContentResolver.query() lub metodę Activity.managedQuery() . Obie metody przyjmują ten sam zestaw argumentów i zwracają obiekt Cursor. Jednak managedQuery() powoduje, że aktywność zarządza cyklem życia kursora. Zarządzany kursor obsługuje wszystkie elementy, takie jak samo wyładowanie, gdy działanie zostaje wstrzymane, i wykonanie polecenia, gdy aktywność zostanie ponownie uruchomiona. Możesz poprosić działanie, aby zaczął zarządzać niezarządzanym obiektem Cursor, dzwoniąc pod numer Activity.startManagingCursor().

Aktualizacja:

managedQuery jest teraz przestarzała (od Androida 3.0).

+1

@ Pentium10: Świetnie! I różnica między używaniem android.provider.MediaStore.Images.Media.query() i context.getContentResolver.query()? – Macarse

+0

Przepraszam, nie wiem tego. Może nie ma. – Pentium10

+0

Przyszło na pytanie @ Macarse :( – MBillau