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