天天看點

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;

                    }