AsyncQueryHandler的使用
使用
2023-09-14 08:58:19 时间
这四个操作,并提供相对应的onXXXComplete方法,以供操作完数据库后进行其它的操作,这四个onXXXComplete方法都是空实现,以便我们只需要去实现我们关注的操作。
2。为什么要使用AsyncQueryHandler
当然你也可以使用ContentProvider去操作数据库。
这在数据量很小的时候是没有问题的,但是如果数据量大了,可能导致UI线程发生ANR事件。
当然你也可以写个Handler去做这些操作,只是你每次使用ContentProvider时都要再写个Handler,必然降低了效率。
因此API提供了一个操作数据库的通用方法。
3。如何使用AsyncQueryHandler
你只需要继承AsyncQueryHandler类,并提供onXXXComplete方法的实现(可以实现任何一个或多个,当然你也可以一个也不实现,如果你不关注操作数据库的結果),在你的实现中做一些对数据库操作完成的处理。
使用时直接调用startXXX方法即可。传入的通用参数如下:
int token,一个令牌,需要跟onXXXComplete方法传入的一致。(当然你也可以不一致,同样在数据库的操作结束后会调用对应的onXXXComplete方法 )
Object cookie,你想传给onXXXComplete方法使用的一个对象。(没有的话传递null即可。基本发现这个变量没太大作用)
Uri uri,(不解释)
4。AsyncQueryHandler还为我们做了什么
AsyncQueryHandler中使用了一个WeakReference ContentResolver 对象,即ContentResolver的弱引用 作用:当contentProvied发生变化时候同步更新仍可以通过使用AsyncQueryHandler类来达到这一要求(暂时还没理解这个作用)
同时,在它执行操作数据库时,吃掉了所有的异常。见如下代码。
catch (Exception e) {
Log.w(TAG, e.toString());
cursor = null;
}
Android微信支付和支付宝支付快速接入 创建应用并获取APPID 开发者中心中创建您的应用,会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能调用开放产品的接口能力。在“我的应用”中按下图方式查看APPID。
Log.w(TAG, e.toString());
cursor = null;
}
Android微信支付和支付宝支付快速接入 创建应用并获取APPID 开发者中心中创建您的应用,会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能调用开放产品的接口能力。在“我的应用”中按下图方式查看APPID。
相关文章
- 表结构中updated_time设计为ON UPDATE CURRENT_TIMESTAMP时,使用过程的一个坑
- pythonanywhere使用:进入虚拟机及修改django项目的css样式
- 关于 Angular 注解 @Injectable() 使用的一些误区
- 2.cocos2dx 3.2在语法的差异,lambada使用表达式和function和bind使用功能
- C# DataTable的詳細使用方法
- 【云原生之Docker实战】使用docker部署Memos碎片化知识管理工具
- 恶意代码分析实战 ollydbg使用来了 Lab 9-1 9-2 9-3
- k8s滚动发布使用
- Mongo-Connector 安装及使用文档