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

? Macarse @ | Original: StackOverFlow

Muito simples . Qual é a diferença entre os três?

Eu quero listar todas as imagens em um dispositivo. Devo usar managedQuery(), android.provider.MediaStore.Images.Media.query() ou context.getContentResolver.query()

Top 5 Responder

1Pentium10 @

managedQuery() Usará consulta de ContentResolver (). A diferença é que, com managedQuery() a atividade vai manter uma referência ao seu Cursor e fechá-lo sempre que necessário (em onDestroy(), por exemplo ). Se você faz query() a si mesmo, você terá de gerir o Cursor como recurso sensível. Se você esquecer, por exemplo, a close() -lo em onDestroy(), Você vai vazar recursos subjacentes ( logcat irá avisá-lo sobre isso.)

Para consultar um provedor de conteúdo, você pode usar o método ContentResolver.query() ou o método Activity.managedQuery() . Ambos os métodos de tomar o mesmo conjunto de argumentos, e ambos retornam um objeto Cursor. No entanto, managedQuery() faz com que a atividade de gerenciar o ciclo de vida do Cursor. A Cursor gestão lida com todas as minúcias, como descarregar -se quando a atividade faz uma pausa, e requerying si quando a atividade for reiniciado. Você pode pedir uma atividade para começar a gerenciar um objeto Cursor não gerenciado para você chamando Activity.startManagingCursor() .

Update:

managedQuery, É considerada obsoleta (a partir de Android 3.0).

2user979247 @

managedQuery (..), é considerada obsoleta (a partir de Android 3.0). Cuidado ..

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