managedQuery()vs context.getContentResolver.query()vs android.provider.something.query()
很简单。 这三者之间有什么区别 我想列出设备中的每个图像。 我应该使用managedQuery()vs context.getContentResolver.query()vs android.provider.something.query(),android,Android,很简单。 这三者之间有什么区别 我想列出设备中的每个图像。 我应该使用managedQuery(),android.provider.MediaStore.Images.Media.query()还是context.getContentResolver.query()managedQuery()将使用ContentResolver的查询()。区别在于 使用managedQuery()活动将保留对您的 在需要时(例如在onDestroy()中)使用光标并将其关闭 如果您自己执行query(),则必
managedQuery()
,android.provider.MediaStore.Images.Media.query()
还是context.getContentResolver.query()
managedQuery()
将使用ContentResolver的查询()。区别在于
使用managedQuery()
活动将保留对您的
在需要时(例如在onDestroy()
中)使用光标并将其关闭
如果您自己执行query()
,则必须将光标作为
敏感资源。例如,如果您忘记在中关闭()
onDestroy()
,您将泄漏底层资源(logcat将警告您
(关于这件事。)
要查询内容提供者,可以使用ContentResolver.query()
方法或Activity.managedQuery()
方法。两个方法都使用相同的参数集,并且都返回一个游标对象。但是,managedQuery()
会使活动管理光标的生命周期。托管游标处理所有细节,例如在活动暂停时卸载自身,以及在活动重新启动时重新查询自身。通过调用Activity.startManagingCursor()
,可以要求活动开始为您管理非托管游标对象
更新:
managedQuery
现在不推荐使用(从Android 3.0开始)。managedQuery(..)现在不推荐使用(从Android 3.0开始)。当心
@Pentium10:太好了!使用android.provider.MediaStore.Images.Media.query()和context.getContentResolver.query()的区别是什么?对不起,我不知道。对于@Macarse的问题,(@Macarse作为android.provider.MediaStore.Images.Media.query()的第一个参数没有区别。该方法只是context.getContentResolver.query()的别名。