android AsyncQueryHandler

在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,看别人写的技术文章,看完了未必就是你的技术,而是要真正的理解和运用。^_^ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值