AsyncQueryHandler 异步查询框架
AsyncQueryHandler简介:
异步的查询操作帮助类,可以处理增删改(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); } }
AsyncQueryHandler 异步查询框架相关推荐
- AsyncQueryHandler 异步查询数据
ListView主界面 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmln ...
- Android 异步查询 AsyncQueryHandler .
转自http://blog.csdn.net/javensun/article/details/6997346 AsyncQueryHandler是单实例的,在一个应用中如果有地方在占用AsyncQu ...
- mysql异步查询 java_java 手写并发框架(一)异步查询转同步的 7 种实现方式
序言 本节将学习一下如何实现异步查询转同步的方式,共计介绍了 7 种常见的实现方式. 思维导图如下: 异步转同步 业务需求 有些接口查询反馈结果是异步返回的,无法立刻获取查询结果. 比如业务开发中我们 ...
- 并发查询_java 手写并发框架(一)异步查询转同步的7种实现方式
序言 本节将学习一下如何实现异步查询转同步的方式,共计介绍了 7 种常见的实现方式. 思维导图如下: 思维导图 异步转同步 业务需求 有些接口查询反馈结果是异步返回的,无法立刻获取查询结果. 比如业务 ...
- 三分钟了解 Python3 的异步 Web 框架 FastAPI
快速编码,功能完善.从启动到部署,实例详解异步 py3 框架选择 FastAPI 的原因. FastAPI 介绍 FastAPI 与其它 Python-Web 框架的区别 在 FastAPI 之前,P ...
- java异步处理同步化_java 异步查询转同步多种实现方式:循环等待,CountDownLatch,Spring EventListener,超时处理和空循环性能优化...
异步转同步 业务需求 有些接口查询反馈结果是异步返回的,无法立刻获取查询结果. 正常处理逻辑 触发异步操作,然后传递一个唯一标识. 等到异步结果返回,根据传入的唯一标识,匹配此次结果. 如何转换为同步 ...
- FastAPI异步 web 框架简介+搭配loguru实现日志服务(转载+补充)
这次我们来聊一聊 FastAPI,它和我们之前介绍的 Sanic 是类似的,都是 Python 中的异步 web 框架.相比 Sanic,FastAPI 更加的成熟.社区也更加的活跃,那么 FastA ...
- 异步爬虫框架与协程浅析
异步爬虫框架与协程浅析 经典原文使用协成完成异步爬虫原文链接 根据分享原文链接. Python基于协程的实现,其实是利用了Python生成器的特性完成的,Python生成器的原理其实涉及到用户态绿色线 ...
- Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架
Sequelize 4.43.0 发布了,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持 PostgreSQL.MySQL.SQLite 和 MSSQL 多种数据库,很 ...
最新文章
- 使用Jupyter notebooks上传文件夹或大量数据到服务器 有解压缩ZIP
- Spring AOP增强(Advice)
- DL框架之MXNet :深度学习框架之MXNet 的简介、安装、使用方法、应用案例之详细攻略
- 关于${ctx}拿不到值的问题
- 软件开发模式:瀑布与敏捷
- 详解链表在前端的应用,顺便再弄懂原型和原型链!
- Java核心面试问题
- 图片服务 - thumbor详细介绍
- Docker生态技术链
- 地震及断层分析相关软件
- 前端常用插件之calender日历控件
- 乐2的android版本,乐视2高通|MIUI10|安卓6.0|最终完美版|极速_最新最全的乐2高通版ROM刷机包下载、刷机...
- win10右键卡顿原因_windows10鼠标点击右键出现卡顿如何解决
- pycharm(python)的注释
- Java开源Web开发框架
- Ubuntu 18.04更改用户名
- 每个公司、每个社区,都需要不止一个“灵魂人物”。
- 华为ensp的缺省_利用华为ENSP模拟器分析和配置中小型企业网络的综合实验
- 青岛计算机考试试题,2016年计算机一级上机考试题「word版」
- 忆阻器(二)——忆阻模拟器
热门文章
- matlab 博客,matlab
- 网站开启https后很慢_HTTPS会影响网站打开速度吗
- java开发环境的建立过程_Java开发环境的搭建及第一个Java程序的创建
- 华为亮度自动调节没了_一加8T不止有8192级自动亮度调节 刘作虎在线种草
- portainer忘记用户名密码_【20201122】做个用户管理系统(6)——忘记密码页面、重置密码方式页面的模板制作...
- 3.Ubuntu18.04取消警告音
- 获取图像的梯度,方向和方向梯度图像
- 另一个小程序 返回的支付结果如何得到_手把手教你测微信小程序
- 北京冬奥会“特许上新日”迎春节 将集中上市多款年味产品
- C语言编程中的“堆”和“栈”七大不同之处