2010-04-07 89 views

回答

72

​​将使用ContentResolver的的查询()。所不同的是 与​​活动将保持对它的引用您的 光标并关闭它需要的时候(在onDestroy()例如)。如果 你自己做query(),你必须管理光标作为 敏感的资源。如果你忘了,例如,以close()onDestroy(),你会泄漏底层资源(logcat中会警告你 一下吧。)

要查询的内容提供者,您可以使用该ContentResolver.query()方法或Activity.managedQuery()方法。两种方法都采用同一组参数,并且都返回一个Cursor对象。但是,​​会导致该活动管理光标的生命周期。托管Cursor处理所有细节,例如活动暂停时自行卸载,并在活动重新启动时重新进行自我检查。您可以通过致电Activity.startManagingCursor()来要求活动开始管理非托管光标对象。

更新:

managedQuery现在已被弃用(由于Android 3.0)。

+1

@ Pentium10:好极了!和使用android.provider.MediaStore.Images.Media.query()和context.getContentResolver.query()之间的区别? – Macarse 2010-04-07 20:25:38

+0

对不起,我不知道。也许没有。 – Pentium10 2010-04-07 21:05:28

+0

来到@ Macarse的问题:( – MBillau 2014-01-23 20:24:31