在QuickContactBadge里面我们可以看到是通过AsyncQueryHandler来查询Contact的数据。其实我不是第一次看AsyncQueryHandler,但以前看到它,没时间去细细地体味它的用法与好处。反正最近这段时间挺闲的,所以慢慢地体会一些代码。
只要你在Google或者baidu输入AsyncQueryHandler,就会得到好多链接,可你一打开就知道几乎都是同一篇文章转来转去:
http://www.cnblogs.com/duguguiyu/archive/2008/01/24/1050813.html
其实这位大师已经讲得很清楚明了了,但若是你没有自己动手过去写代码,我想是很难体会理解真正的含义的。我看完了他的文章和API document,我就在想用AsyncQueryHandler和不用它有什么区别呢?
API document是这样写道的:
A helper class to help make handling asynchronous ContentResolver queries easier.
让ContentResolver查询更加容易的帮助类。
OMG!太简洁凝练的解释了!
经过我的思考和经验,我总结如下,若有不对的地方,请指正。
1,若我们不用AsyncQueryHandler,直接在UI 线程调用ContentResolve去操作数据库比如查询,若你的数据库的数据很少还好,若很多,就会出现ANR了。一般解决ANR,就是开thread去解决。我在去年做案子的时候,就遇到这样的情况,数据太多了,我不得不开thread去查询,那开了Thread就得通过Handler来和UI线程交互,让UI线程知道何时查询完毕,可以更新UI将查询的结果表现出来。
2,若我们用AsyncQueryHandler,AsyncQueryHandler它就会主动地帮你开了Thread来避免ANR,并且它是继承于Handler,所以就可以通过onCompleteQuery来通知UI线程已经查询(删除...)完了。
所以这两种的区别在于工作是你自己写代码来做,还是调用现成的啦!^_^
也就是那位大师最后讲的那段话了。
至于Async异步,我没体会和明白,啥叫异步?
3,看别人写的技术文章,看完了未必就是你的技术,而是要真正的理解和运用。^_^
分享到:
相关推荐
private AsyncQueryHandler asyncQueryHandler = new AsyncQueryHandler(getContentResolver(), getMainLooper()); ``` **2. 启动异步查询** AsyncQueryHandler提供了一个startQuery()方法用于启动异步查询。这个...
`AsyncQueryHandler`是Android系统提供的一种用于在后台线程执行SQLite数据库查询的工具类,它可以避免因为长时间数据库操作导致的ANR(Application Not Responding)错误。下面我们将深入探讨`AsyncQueryHandler`的...
`AsyncQueryHandler` 是Android系统提供的一种异步处理数据库查询的方法,特别适用于从SQLite数据库中读取大量数据,如手机联系人列表。本篇文章将深入探讨如何使用`AsyncQueryHandler`来实现手机联系人信息的异步...
而`AsyncQueryHandler`是Android系统提供的一个辅助类,用于在ContentProvider中执行异步查询操作,避免阻塞主线程,提升用户体验。这篇博客()可能会详细解析这个帮助类的工作原理和使用方法。 `...
本代码是QuickContactBadge和AsyncQueryHandler实现联系人列表的完美实现,对初级程序员会有很大的帮助,可以直接拿来用,还带了首字母拼音的滑动栏,里面有自定义控件可以让你好好学习
在Android开发中,`AsyncQueryHandler` 和 `ContentProvider` 是两个非常重要的组件,它们用于高效、异步地处理数据库查询,并将结果显示到UI上,如ListView等。本篇文章将详细解析这两个组件以及相关的Adapter用法...
为了提高用户体验并避免阻塞主线程,我们可以使用`AsyncQueryHandler`来异步处理查询操作。本文将详细介绍如何使用`AsyncQueryHandler`实现获取手机联系人的功能。 首先,我们来看一下布局文件`main.xml`。这是一个...
在本文中,我们将深入探讨`AlphabetListView`的工作原理、如何使用以及其与`AsyncQueryHandler`的结合。 ### 1. `AlphabetListView`概述 `AlphabetListView`的核心功能是提供一个侧边栏,显示A到Z的字母,用户可以...
这个功能涉及到多个关键组件和技术,包括`ActionBar`、`Fragment`以及`AsyncQueryHandler`。接下来,我们将详细讨论这些知识点。 首先,`ActionBar`是Android UI设计模式中的一种,它位于应用顶部,提供应用程序的...
本案例主要探讨了如何使用Android的SQLite数据库,以及与之相关的组件和工具,如ContentProvider、AsyncQueryHandler和SQLiteOpenHelper。以下是这些关键知识点的详细说明。 1. **SQLite数据库**: 安卓系统默认支持...
在Android开发中,消息机制和异步多线程是至关重要的概念,...通过理解和熟练运用`Handler`、`Looper`、`Message`以及像`AsyncQueryHandler`这样的工具,开发者能够高效地处理异步任务,同时确保应用的稳定性和响应性。
- **查询消息发送**:在 `startQuery()` 方法中,通过调用 `AsyncQueryHandler` 的 `startQuery()` 方法,应用程序发送查询请求。这个方法接收查询标识、回调上下文、查询的URI、投影字段、选择条件、选择参数以及...
例如,`AsyncQueryHandler`是Android提供的一种处理与`ContentProvider`交互的异步方式,它是`Handler`的子类,简化了对数据库查询的处理。通过继承`AsyncQueryHandler`并重写相关方法,开发者可以轻松实现数据库...
- `mQueryHandler`是`QueryHandler`的实例,它继承自`AsyncQueryHandler`,负责异步查询联系人数据。 - 在`onResume`方法中,会检查是否需要执行查询。如果是在默认模式下,并且是第一次打开应用,会调用`...
这一功能通过`AsyncQueryHandler`实现,它是异步处理数据库查询的工具类。在`SuggestionsProvider`中,`onStartQuery()`和`onStartUpdate()`方法处理查询和更新请求,`onQueryComplete()`则在后台线程完成查询后回调...
他使用AsyncQueryHandler进行异步查询,实现了ListView滑动、联系人自动提示、草稿自动保存等特性。 3. **手机万能播放器**:该应用支持多种音视频格式的本地和在线播放,还具有视频下载和搜索功能。他在项目中负责...
作者提出利用AsyncQueryHandler异步查询辅助类来获取短信会话列表,避免因长时间阻塞主线程导致的ANR(Application Not Responding)异常。这种异步处理方式可以提高系统的响应速度和用户体验。 在短信显示方面,...
此外,DataDroid还支持异步查询,通过AsyncQueryHandler可以在后台线程执行查询,避免阻塞UI,提高用户体验。 再者,DataDroid在事务管理方面也做得相当出色。使用TransactionManager,开发者可以方便地进行数据库...