ContentProvider

ContentProvider

1.是什么

  ContentProvider是实现应用程序之间数据交换(访问)的标准API,当一个APP需要把数据暴露出来提供给其它APP访问时,

那么,该APP就可以对外提供一个ContentProvider,此时其它APP就可以通过ContentResolver来操作由ContentProvider
暴露出来的数据。

*注意:一旦一个应用程序通过ContentProvider暴露出了自己的数据操作接口,那么不管该应用是否启动,
其它应用程序都可以通过该接口访问该应用程序的私有数据(增删改查)。


2.场合

1)使用媒体库信息(音频,视频,图片)
2)读取联系人信息

一般而言,我们应用更多的使用其它APP提供的ContenProviter,因此,我们使用ContentResolver的机会更多


3.ContentResolver
1)获取ContentResolver对象
(ContextWrapper)
public ContentResolver getContentResolver(){…}
ContentResolver cr =getContentResolver();

2)获取URI(对应一个ContentProvider )
Uri uri = ContactsContract.Data.CONTENT_URI;(联系人的Uri)

3)执行查询操作(增删改查)
Cursor c = cr.query(…);

4)遍历Cursor获取数据,可以显示出来

4.CursorLoader

   可以采用异步加载技术(底层借助asynctask)从ContentProvider对象对应的数据集中读取数据.借助此对象可以优化我们加载数据的过程,
在使用此对象我们通常要借助Activity对象提供的一个LoadManager对象对CursorLoader对象进行初始化。

相关API:
类 LoaderManager
接口 LoaderCallbacks
类 CursorLoader

使用CursorLoader步骤:
1)初始化Loader
1)获取LoaderManager对象
2)调用LoaderManager对象的 initLoader(int id, Bundle args, LoaderCallbacks callback)

*id  Loader的唯一标识,随便取
*args 一般为null
*callback  回调接口

    2)执行查询操作

    3)处理结果(数据加载完成,Loader重置)

注:LoaderCallbacks提供三个回调方法
* public Loader onCreateLoader(int id, Bundle args);

       释:此方法在创建Loader时回调,


    *   public void onLoadFinished(Loader<D> loader, D data);
         释:加载完成 是回调

    *   public void onLoaderReset(Loader<D> loader);
         释:重置时回调

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值