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

? Macarse @ | Original: StackOverFlow

Abbastanza semplice . Qual è la differenza tra questi tre ?

Voglio elencare ogni immagine in un dispositivo . Devo usare managedQuery(), android.provider.MediaStore.Images.Media.query() o context.getContentResolver.query()

Top 5 Risposta

1Pentium10 @

managedQuery() Utilizzerà la query di ContentResolver ( ) . La differenza è che con managedQuery() l'attività manterrà un riferimento alla Cursore e chiuderlo in caso di necessità ( in onDestroy(), per esempio ). Se fate query() voi stessi, si dovrà gestire il cursore come risorse sensibili . Se si dimentica, per esempio, a close() in onDestroy(), Si perdite risorse sottostanti ( logcat vi avvertirà in proposito.)

Per interrogare un fornitore di contenuti, è possibile utilizzare il metodo ContentResolver.query() o il metodo Activity.managedQuery() . Entrambi i metodi hanno lo stesso insieme di argomenti, ed entrambi restituiscono un oggetto cursore . Tuttavia, managedQuery() causa l'attività per la gestione del ciclo di vita del cursore . Un cursore gestito gestisce tutte le sottigliezze, come ad esempio lo scarico stesso quando l'attività si ferma, e di riottenere stesso al riavvio di attività . Si può chiedere di un'attività di iniziare a gestire un oggetto Cursor gestito per voi da chiamare Activity.startManagingCursor() .

Update:

managedQuery È ora deprecato ( a partire da Android 3.0 ) .

2user979247 @

managedQuery ( .. ) è ora deprecato ( a partire da Android 3.0 ) . Attento ..

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