ManagedQuery() vs context.getContentResolver.query() vs android.provider.something.query()
Довольно просто.
В чем разница между этими тремя?
Я хочу перечислить каждое изображение на устройстве.
Должен ли я использовать managedQuery(), android.provider.MediaStore.Images.Media.query() или context.getContentResolver.query()
Ответ 1
managedQuery() будет использовать запрос ContentResolver(). Разница
что при managedQuery() активность будет содержать ссылку на ваш
Курсор и закройте его при необходимости (например, в onDestroy()). Если
вы сами делаете query(), вам будет управлять курсором как
чувствительный ресурс. Если вы забудете, например, close() в
onDestroy(), вы будете утечка основных ресурсов (logcat предупредит вас
об этом.)
Чтобы запросить поставщика контента, вы можете использовать либо метод ContentResolver.query(), либо метод Activity.managedQuery(). Оба метода принимают один и тот же набор аргументов, и оба возвращают объект Cursor. Однако managedQuery() заставляет активность управлять жизненным циклом Курсора. Управляемый курсор обрабатывает все тонкости, такие как разгрузка, когда активность приостанавливается, и запрашивает себя при перезапуске активности. Вы можете попросить Activity начать управление неуправляемым объектом Cursor, вызвав Activity.startManagingCursor().
Update:
managedQuery теперь устарел (начиная с Android 3.0).
Ответ 2
managedQuery (..) теперь устарел (начиная с Android 3.0). Остерегайтесь..