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

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

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

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

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

Обновить:

managedQuery теперь устарел ( managedQuery с Android 3.0).

ManagedQuery (..) теперь устарел (начиная с Android 3.0). Осторожно..

Ошибка Android: java.lang.IllegalStateException: попытка запросить уже закрытый курсор

Intereting Posts
Android facebook sdk ошибка входа 1118578 Невозможно получить ответ response.body.toString () OkHttp для возврата строки Android TextToSpeech просто произносит короткие слова вместо произнесения их Функция отмены приложения Android (мультитач) Как настроить стиль кнопки для материала AppCompat? Показывать последний элемент в ListiView при нажатии на редактирование текста Eclipse, два разных файла с одинаковым именем в разных каталогах Как защитить фоновое обслуживание / аварийные сигналы, которые нужно убить в недавно запущенных устройствах в настраиваемых ОС, таких как oppo – coloros, vivo-funtouch os, Xiomi-MIUI os? Android / Eclipse: где писать такие командные строки, как «эмулятор -wipe-data»? Android – другое изображение для опрокидывания на ImageButton Как программно установить атрибут стиля в представлении Загружать фотокамеру и файловую камеру из поля просмотра веб-просмотра INPUT SharedPreferences не является постоянным Соглашение об именах для идентификаторов в Android Robolectric with Gradle: Ресурсы не найдены