ContentProvider(1):杂言

在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件、等等内容,都是不允许其他直接访问的,但有时候,沟通是必要的,不仅对第三方很重要,对应用自己也很重要。

一个联系人管理的应用。如果不允许第三方的应用对其联系人数据库进行增删该查,整个应用就失去了可扩展力,必将被其他应用抛弃,然后另立门户,自个玩自个的去了。

应用想对外提供的数据,可以通过派生ContentProvider类, 封装成一枚Content Provider,每个Content Provider都用一个uri作为独立的标识,形如:content://com.xxxxx。

ContentProvider 查询到的结果,以Cursor的形式进行返回。

ContentResolver仅提供了同步访问的Content Provider的接口,但通常,Content Provider需要访问的可能是数据库等大数据源,效率上不足够快,会导致调用线程的拥塞。所以Android还提供了一个AsyncQueryHandler帮助进行异步访问Content Provider。

Service中如果有一个耗时操作,往往会在子线程中处理,而对Content Provider的访问不论需要多久,都提供的是约定的同步访问接口。换言之,例如在一个activity中访问service并在其中执行一个耗时操作,只要在service中启动子线程去执行这个耗时操作就好,activity的UI线程可以继续下面操作,而如果activity中访问的ContentProvider数据量较大,则只能慢慢等,等数据返回后再继续下面操作。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值