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).
@ Pentium10: Świetnie! I różnica między używaniem android.provider.MediaStore.Images.Media.query() i context.getContentResolver.query()? – Macarse
Przepraszam, nie wiem tego. Może nie ma. – Pentium10
Przyszło na pytanie @ Macarse :( – MBillau