Android使用CursorLoader加载手机联系人
来源:互联网 发布:mac系统多大 编辑:程序博客网 时间:2024/04/30 19:44
1、Loader简介
Loader是Android3.0(API版本11)中引入的一个抽象类,它主要是封装用来进行异步加载数据。Loader的直接子类是AsyncTaskLoader,也就是AsyncTask和Loader的一个封装类,关于AsyncTask这里就不举例了,总之就是异步加载数据,实际上和Thread+Hander+Loader都一样的效果。而CursorLoader是AsyncTaskLoader的子类,主要用来异步查询ContentProvider中的Cursor,比起直接查询速度要快很多。
2、CursorLoader的使用
CursorLoader可以用来加载ContentProvider里的数据,以回调的形式返回数据,这里我们以加载手机通讯录的联系人为例。(ContentProvider请自行查询资料学习)
第一步:权限
读取手机联系人需要以在Manifest中加入下权限
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
第二步:实现回调接口
private class TestLoaderCallback implements LoaderManager.LoaderCallbacks<Cursor> { @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { /** * 这里返回执行查询的Loader对象,传入的参数和ContentResolver的执行的参数是一样的 */ return new CursorLoader(mContext, ContactsContract.CommonDataKinds.Phone .CONTENT_URI, null, null, null, null); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { /** * 加载完成时的回调 * 回调在子线程中,不可以进行UI相关的操作 */ if (null != data) { while (data.moveToNext()) { // 获取备注名 String name = data.getString(data.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); // 获取电话号码 String phone = data.getString(data.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // 其他的常量自行查询文档 } runOnUiThread(new Runnable() { @Override public void run() { // 更新UI操作 } }); } } @Override public void onLoaderReset(Loader<Cursor> loader) { /** * 当LoaderManager重置Loader时回调,子线程 * 可以在这里释放一些查询数据的引用,不用关闭Cursor,LoaderManager会自动关闭 */ }
第三步:执行查询操作
LoaderManager manager = getSupportLoaderManager();// 此处的第一二个参数和Callback中onCreateLoader的值对应,可以传一些查询条件等 // 第二个为刚刚的回调类实例manager.initLoader(id, bundle, callback);
好了,到此查询操作就完成了,这只是其中一个例子,其他的诸如系统音乐视屏文件、短信、通话记录等的查询可以自行尝试。
阅读全文
1 0
- Android使用CursorLoader加载手机联系人
- 使用CursorLoader加载联系人信息
- Android通过Cursorloader获取联系人列表
- 使用CursorLoader异步加载数据
- 使用CursorLoader异步加载数据
- CursorLoader获取联系人并使用选项菜单添加联系人
- Android 使用Loader加载联系人
- android中CursorLoader类使用
- Android 使用CursorLoader获取手机短信
- CursorLoader异步装载联系人
- Android之cursorLoader进行数据异步加载
- Android 使用AsyncTaskLoader获取手机联系人
- Android使用READ_CONTACTS读取手机联系人
- android 使用内容提供者获取手机联系人
- android 使用内容提供者获取手机联系人
- Android官方开发文档Training系列课程中文版:后台加载数据之使用CursorLoader进行查询
- Android获取手机联系人
- Android 获取手机联系人
- python学习_4
- OpenFst的创建和读取
- 51NOD 1217 Minimum Modular(数论)
- According to Bartjens UVA
- 网页直接调用android客户端的某个功能
- Android使用CursorLoader加载手机联系人
- 个人自学学习方法记录
- Python语法基础
- 运算符和输出函数
- React Native 运行报错:Cannot find entry file index.android.js in any of the roots
- 11.22
- VC编译DLL时,如何不依赖VC运行库
- C# 字段和属性
- C++小练习(三)