天天看点

AsyncQueryHandler的使用

每天进步一点点之asyncqueryhandler学习

asyncqueryhandler:异步的查询操作帮助类,其实它同样可以处理增删改

1。asyncqueryhandler的作用

查询其api便可知,它担供:

<a target="_blank">startinsert</a>

<a target="_blank">startdelete</a>

<a target="_blank">startupdate</a>

<a target="_blank">startquery</a>

2。为什么要使用asyncqueryhandler

当然你也可以使用contentprovider去操作数据库。

这在数据量很小的时候是没有问题的,但是如果数据量大了,可能导致UI线程发生anr事件。

当然你也可以写个handler去做这些操作,只是你每次使用contentprovider时都要再写个handler,必然降低了效率。

因此api提供了一个操作数据库的通用方法。

3。如何使用asyncqueryhandler

使用时直接调用startxxx方法即可。传入的通用参数如下:

object cookie,你想传给onxxxcomplete方法使用的一个对象。(没有的话传递null即可。基本发现这个变量没太大作用)

uri uri,(不解释)

4。asyncqueryhandler还为我们做了什么

asyncqueryhandler中使用了一个weakreference&lt;contentresolver&gt;对象,即contentresolver的弱引用  作用:当contentprovied发生变化时候同步更新仍可以通过使用asyncqueryhandler类来达到这一要求(暂时还没理解这个作用)

同时,在它执行操作数据库时,吃掉了所有的异常。见如下代码。

 catch (exception e) {

                        log.w(tag, e.tostring());

                        cursor = null;

                    }