官方文档对AsyncQueryHandler的解释非常简洁
A helper class to help make handling asynchronousContentResolver queries easier
下面解释一番,其实明白之后就会发现,真的就是一句话的事情而已.
AsyncQueryHandler:异步的查询操作帮助类,其实它同样可以处理增删改,
查询其API便可知,它担供:
startInsert()
startDelete()
startUpdate()
startQuery()
这四个操作,并提供相对应的onXXXComplete方法,以供操作完数据库后进行其它的操作,这四个onXXXComplete方法都是空实现,以便我们只需要去实现我们关注的操作。
如题所说,让ContentResolver的查询操作更简单,
首先,若我们不用AsyncQueryHandler,那么,在UI 线程调用ContentResolve去操作数据库,比如查询,若你的数据库的数据很少还好,若很多,就会出现ANR了。一般解决ANR,就是开thread去解决。然后呢,既然开了新的Thread,就得通过Handler来和UI线程交互,也就是查询完之后通过Handler发一个message通知主线程去更新UI.这一系列的操作其实还是挺繁琐的.
所以,A helper class to help make handling asynchronousContentResolver queries easier
那么,若我们用AsyncQueryHandler怎样做呢,AsyncQueryHandler它就会主动地帮你开了Thread来避免ANR,并且它是继承于Handler,所以就可以通过onCompleteQuery来通知UI线程已经查询(删除,更新,增加)完成。
所以,这两种实现方式的区别在于,工作是你自己写代码来做,还是调用现成的.
使用时直接调用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);
}
}
更详细代码实现参考http://blog.csdn.net/hudashi/article/details/6896356
分享到:
相关推荐
Android创意实例详解书籍源码,分享一下Android创意实例详解书籍源码
《Android应用开发详解》源码,完整版,值得看一看。 《Android核心技术和开发详解》各章案例的全部源代码,第一章将要介绍的是Android开发起步的相关知识,首先对Android平台进行简单的介绍,其中包括Android的背景...
android应用开发详解,不错的一本书,适合刚刚学习android开发的盆友看,欢迎下载学习~~
2.Android.mk和Android.bp语法大全及使用方法详解 3.Android.mk或Android.bp中引用Android的第三方(jar、aar、so)、Androidx的类库等的使用方法 4.Android.mk或Android.bp编译生成Apk、静态库、动态库、可执行文件等...
AndroidStudio使用详解 AS快捷键图解
Android 数据库SQLite 详解,简单学好SQLite
Android应用开发详解是一本Android应用开发书籍,既适合Android初学者,也适合具备了一定Android开发经验但需要开发案例的高级读者。 该书分为三个部分,共18章,由浅入深地详细介绍了Android的每个开发细节。 该书...
Android应用开发详解2010版 Android应用开发详解2010版
《Android应用开发详解》源码,找了好久的,全部章节都有。
《移动平台开发书库:Android项目开发详解》涵盖了Android前端界面开发、Activity java程序的开发以及ASP后台技术开发等内容,强调了Android与后台数据通信技术、XML解析技术、数据存储技术以及与Android前端配套的...
Android优化技术详解 陈德春 Android优化技术详解 陈德春 Android优化技术详解 陈德春
Android-API详解大全
Android各种控件详解,
android中PreferenceActivity详解
Android项目开发详解
《Android应用开发详解》分为三个部分,共18章,由浅入深地详细介绍了Android的每个开发细节。《Android应用开发详解》基础翔实,实例丰富,案例真实。从基础到案例覆盖了Android应用开发的三大领域:基础应用、网络...
Android优化技术详解
Android应用开发详解.pdf;Android应用开发详解.pdf;