ContentProvider
2016-07-04 00:15
519 查看
ContentProvider
那么,该APP就可以对外提供一个ContentProvider,此时其它APP就可以通过ContentResolver来操作由ContentProvider
暴露出来的数据。
*注意:一旦一个应用程序通过ContentProvider暴露出了自己的数据操作接口,那么不管该应用是否启动,
其它应用程序都可以通过该接口访问该应用程序的私有数据(增删改查)。
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(…);
相关API:
类 LoaderManager
接口 LoaderCallbacks
类 CursorLoader
使用CursorLoader步骤:
1)初始化Loader
1)获取LoaderManager对象
2)调用LoaderManager对象的 initLoader(int id, Bundle args, LoaderCallbacks callback)
注:LoaderCallbacks提供三个回调方法
* public Loader onCreateLoader(int id, Bundle args);
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); 释:重置时回调
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories