Android 中的 ManagedQuery()

来源:互联网 发布:凡人修仙传优化 编辑:程序博客网 时间:2024/06/05 00:19

根据指定的URI路径信息返回包含特定数据的Cursor对象,应用这个方法可以使Activity接管返回数据对象的生命周期。

参数:

URI:  Content Provider 需要返回的资源索引

Projection: 用于标识有哪些columns需要包含在返回数据中。

Selection: 作为查询符合条件的过滤参数,类似于SQL语句中Where之后的条件判断。

SelectionArgs: 同上。

SortOrder: 用于对返回信息进行排序。

下面是有关 ContentResolver.query() 和 Activity.managedQuery() 两个方法的区别:

  To query a content provider, you can use either theContentResolver.query() method or the Activity.managedQuery() method.Both methods take the same set of arguments, and both return a Cursorobject. However, managedQuery() causes the activity to manage the lifecycle of the Cursor. [...]

我也来翻译下:

 对于查询一个内容提供者,你可以使用 ContentResolver.query() 或者 Activity.managedQuery() 方法。两种方法都带有相同参数,并且都返回 Cursor 对象。然后,Activity.managedQuery()  方法导致活动管理 Cursor 的生命周期。

大家都知道Android从1.5开始刚插入SD卡时系统会调用MediaScanner服务进行后台扫描,索引新的歌曲、图片和视频等信息,如果我们需要快速提取图片和视频缩略图可以直接访问 android.provider.MediaStore.Images.Thumbnails 和android.provider.MediaStore.Video.Thumbnails这两个数据库,即可查询出来缩略图

  如何判断文件呢? 可以通过Cursor遍历数据库,对比INTERNAL_CONTENT_URI字段的值,这是一个Uri我们可以转成String,这里保存着Android手机SD卡上的多媒体文件完整路径。

  有关具体的缩略图可以通过getThumbnail(ContentResolver cr, long origId, int kind, BitmapFactory.Options options) 或getThumbnail(ContentResolver cr, long origId, long groupId, int kind, BitmapFactory.Options options) 方法获取,这两种方法返回Bitmap类型,而缩略图的分辨率可以从HEIGHT和WIDTH两个字段提取,在Android上缩略图分为两种,通过读取 KIND字段来获得,分别为MICRO_KIND和MINI_KIND 分别为微型和迷你两种缩略模式,前者的分辨率更低。这样我们平时获取文件系统的某个图片预览时,可以直接调用系统缩略图,而不用自己重新计算。

  最后Android123提示大家,缩略图保存在SD卡的DCIM目录,里面的.thumbnails是图片的,而.video_thumbnails是视频的,这两个文件夹为隐藏属性,一般的文件管理器都可以看到。
原创粉丝点击