managedQuery () против context.getContentResolver.query () против android.provider.something.query ()

? Macarse @ | Original: StackOverFlow
---

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

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

---

Top 5 ответ

1Pentium10 @

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

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

Update:

managedQuery В настоящее время осуждается (по состоянию на Android 3.0 ) .

2user979247 @

managedQuery (.. ) теперь не рекомендуется (по состоянию на Android 3.0 ) . Осторожно ..

http://stackoverflow.com/questions/5915597/android-error-java-lang-illegalstateexception-trying-to-requery-an-already-clos