Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
managedQuery()vs context.getContentResolver.query()vs android.provider.something.query()_Android - Fatal编程技术网

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()的别名。