managedQuery () по сравнению с context.getContentResolver.query () по сравнению с android.provider.something.query ()

Довольно простой. Каково различие среди тех трех?

Я хочу перечислить каждое Изображение в устройстве. Если я использую managedQuery(), android.provider.MediaStore.Images.Media.query() или context.getContentResolver.query()

46
задан Carl Manaster 24 August 2010 в 22:56
поделиться

1 ответ

managedQuery () будет использовать запрос ContentResolver (). Разница в том, что с managedQuery () действие будет сохранять ссылку на ваш Курсор и закрывать его при необходимости (в onDestroy () для Например.) Если вы сами выполните query () , вам придется управлять Курсором как конфиденциальным ресурсом. Если вы забудете, например, close () его в onDestroy () , произойдет утечка базовых ресурсов (logcat предупредит вас о ит.)

Для запроса поставщика контента можно использовать метод ContentResolver.query () или метод Activity.managedQuery () . Оба метода принимают один и тот же набор аргументов и оба возвращают объект Cursor. Однако managedQuery () заставляет действие управлять жизненным циклом курсора. Управляемый Cursor обрабатывает все тонкости, такие как выгрузка себя, когда действие приостанавливается, и запрашивает себя при перезапуске действия. Вы можете попросить Activity начать управление неуправляемым объектом Cursor для вас, вызвав Activity.startManagingCursor () .

Обновление:

managedQuery больше не поддерживается (начиная с Android 3.0).

72
ответ дан 26 November 2019 в 20:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: