Handler——AsyncQueryHandler
来源:互联网 发布:java中获取input标签 编辑:程序博客网 时间:2024/06/05 18:48
转自http://blog.csdn.net/hudashi/article/details/6896356
http://www.android100.org/html/201409/09/63831.html
异步的查询操作帮助类,可以处理增删改(ContentProvider提供的数据)
使用场景:
在一般的应用中可以使用ContentProvider去操作数据库。
这在数据量很小的时候是没有问题的,但是如果数据量大了,可能导致UI线程发生ANR异常(超过5秒)。
当然你也可以写个Handler去做这些操作,只是你每次使用ContentProvider时都要再写个Handler,必然降低了效率。
因此当数据量较大时,最好还是使用Android已经封装好的异步查询框架AsyncQueryHandler,优化我们的代码.
要注意的是,一般在查询本地的应用的数据的时候要去采用CursorAdapter。
AsyncQueryHandler内部实现
AsyncQueryHandler类封装了调用者线程与工作线程的交互过程。交互的主体是两个Handler,一个运行在调用者线程中,一个运行在工作者线程中。通过提供onXXXComplete的回调接口,实现事件的完成处理。
API中提供
startInsert,
startDelete,
startUpdate,
startQuery四种方法,并有响应的onXXXComplete()方法.于对应的4个onXXXComplete()方法都是空实现,因此我们完成相应调用后进行后续其他的操作.?
使用方法
继承AsyncQueryHandler类,并提供onXXXComplete方法的实现(可以实现任何一个或多个,当然你也可以一个也不实现,如果你不关注操作数据库的結果),在你的实现中做一些对数据库操作完成的处理。
使用时直接调用startXXX方法即可。传入的通用参数如下:
token,一个令牌,主要用来标识查询,保证唯一即可.需要跟onXXXComplete方法传入的一致。(当然你也可以不一致,同样在数据库的操作结束后会调用对应的onXXXComplete方法?)
cookie,你想传给onXXXComplete方法使用的一个对象。(没有的话传递null即可)
Uri uri(进行查询的通用资源标志符):
projection 查询的列?
selection ?限制条件?
selectionArgs 查询参数
orderBy 排序条件private void startQuery() { Uri uri = Sms.CONVESATION_URI; mQueryHandler.startQuery(0, null, uri, CONVERSATION_PROJECTION, null, null, "sms.date desc"); } // 写一个异步查询类 private final class QueryHandler extends AsyncQueryHandler { public QueryHandler(ContentResolver cr) { super(cr); } @Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { super.onQueryComplete(token, cookie, cursor); // 更新mAdapter的Cursor mAdapter.changeCursor(cursor); } }
- Handler——AsyncQueryHandler
- Handler、HandlerThread和AsyncQueryHandler
- Android学习——AsyncQueryHandler
- Handler官方范例AsyncQueryHandler源码解析
- Handler、HandlerThread、AsyncQueryHandler三者的关系
- Handler研究2-AsyncTask,AsyncQueryHandler分析
- AsyncQueryHandler
- AsyncQueryHandler
- AsyncQueryHandler
- AsyncQueryHandler
- AsyncQueryHandler
- AsyncQueryHandler
- AsyncQueryHandler
- AsyncQueryHandler
- AsyncQueryHandler
- AsyncQueryHandler
- AsyncQueryHandler
- 深入学习理解 Handler HandlerThread AsyncQueryHandler 三者的关系
- struct和class的区别 观察者模式 https连接 点击button收到点击事件,中间发生了什么?4道过滤菜鸟的iOS面试题
- 四元素姿态解算 ---地磁计融合解读
- tornado 12、生产模式部署到服务器过程中遇到的一些命令
- Modbus TCP和Modbus Rtu的区别
- osiii的调度点
- Handler——AsyncQueryHandler
- html+css基础
- 初识数据结构
- activity 切换动画
- Centos安装配置Samba服务器
- Objective-C——编码规范
- JAVA反射机制总结
- Javascript算法练习(八)
- 什么是MVC的领域模型