Подтвердить что ты не робот

ManagedQuery() vs context.getContentResolver.query() vs android.provider.something.query()

Довольно просто. В чем разница между этими тремя?

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

4b9b3361

Ответ 1

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

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

Update:

managedQuery теперь устарел (начиная с Android 3.0).