Android 中的 ManagedQuery()

根据指定的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是视频的,这两个文件夹为隐藏属性,一般的文件管理器都可以看到。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值