非常简单。 这三者有什么区别?managedQuery()vs context.getContentResolver.query()vs android.provider.something.query()
我想列出设备中的每个图像。 我应该使用,android.provider.MediaStore.Images.Media.query()
或context.getContentResolver.query()
非常简单。 这三者有什么区别?managedQuery()vs context.getContentResolver.query()vs android.provider.something.query()
我想列出设备中的每个图像。 我应该使用,android.provider.MediaStore.Images.Media.query()
或context.getContentResolver.query()
将使用ContentResolver的的查询()。所不同的是 与活动将保持对它的引用您的 光标并关闭它需要的时候(在onDestroy()
例如)。如果 你自己做query()
,你将必须管理光标作为 敏感的资源。如果你忘了,例如,以close()
它 onDestroy()
,你会泄漏底层资源(logcat中会警告你 一下吧。)
要查询的内容提供者,您可以使用该ContentResolver.query()
方法或Activity.managedQuery()
方法。两种方法都采用同一组参数,并且都返回一个Cursor对象。但是,会导致该活动管理光标的生命周期。托管Cursor处理所有细节,例如活动暂停时自行卸载,并在活动重新启动时重新进行自我检查。您可以通过致电Activity.startManagingCursor()
来要求活动开始管理非托管光标对象。
更新:
managedQuery
现在已被弃用(由于Android 3.0)。
managedQuery(..)现已被弃用(截至Android 3.0)。小心..
Android error: java.lang.IllegalStateException: trying to requery an already closed cursor
@ Pentium10:好极了!和使用android.provider.MediaStore.Images.Media.query()和context.getContentResolver.query()之间的区别? – Macarse 2010-04-07 20:25:38
对不起,我不知道。也许没有。 – Pentium10 2010-04-07 21:05:28
来到@ Macarse的问题:( – MBillau 2014-01-23 20:24:31