每天进步一点点之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<contentresolver>对象,即contentresolver的弱引用 作用:当contentprovied发生变化时候同步更新仍可以通过使用asyncqueryhandler类来达到这一要求(暂时还没理解这个作用)
同时,在它执行操作数据库时,吃掉了所有的异常。见如下代码。
catch (exception e) {
log.w(tag, e.tostring());
cursor = null;
}