日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AsyncQueryHandler了解

發(fā)布時(shí)間:2025/7/14 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AsyncQueryHandler了解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載地址:http://www.krislq.com/2013/02/android_class_asyncqueryhandler/#more-596

摘要:

本文主要是從下面的幾個(gè)方面去介紹AsyncQueryHandler。

1. AsyncQueryHandler介紹

2. 為什么需要 AsyncQueryHandler

3. 如何使用AsyncQueryHandler

?

1. AsyncQueryHandler介紹:

AsyncQueryHandler顧名思義就是異步查詢幫助類,它是Handler的子類。我們在處理與ContentProvider相關(guān)內(nèi)容的時(shí)候,可以使用此類來完成一些異步的操作。

AsyncQueryHandler類上為我們提供了以下接口:
startInsert
startDelete
startUpdate
startQuery

這四個(gè)操作,并提供相對應(yīng)的onXXXComplete方法,以供操作完數(shù)據(jù)庫后進(jìn)行其它的操作,這四個(gè) onXXXComplete方法都是空實(shí)現(xiàn),所以我們可以覆寫此類方法來完成我們的后續(xù)操作。

2. 為什么需要 AsyncQueryHandler

當(dāng)然你也可以使用ContentProvider去操作數(shù)據(jù)庫。這在數(shù)據(jù)量很小的時(shí)候是沒有問題的,但是如果數(shù)據(jù)量大了,可能導(dǎo)致UI線程發(fā)生ANR事件。
當(dāng)然你也可以寫個(gè)Handler去做這些操作,只是你每次使用ContentProvider時(shí)都要再寫個(gè)Handler,必然降低了效率。
因此API提供了一個(gè)操作數(shù)據(jù)庫的通用方法。

3. 如何使用AsyncQueryHandler

首先我們需要繼承AsyncQueryHandler,并且提供onXXXComplete的實(shí)現(xiàn)方法(如果我們不關(guān)心操作數(shù)據(jù)庫的結(jié)果,我們也可以不用實(shí)現(xiàn)),用于實(shí)現(xiàn)數(shù)據(jù)庫操作完成的操作。

然后,在我們需要使用的地方直接使用startXXX方法即可。傳入的通用參數(shù)有:

int token ,一個(gè)標(biāo)識符。與onXXXComplete中返回的是一致的。當(dāng)我們需要同時(shí)查詢多次時(shí),可以通過 token來標(biāo)識每個(gè)查詢。
Object cookie,你想傳給onXXXComplete方法使用的一個(gè)對象。不想傳,可以為null

Uri uri,不解釋了

?
下面再帖一段簡單的用法:

?

1 protected void onResume() { 2 super.onResume(); 3 Uri uri = Uri.parse("content://com.android.contacts/data/phones"); 4 String[] projection = { "_id", "display_name", "data1", "sort_key" }; 5 asyncQuery.startQuery(0, null, uri, projection, null, null, 6 "sort_key COLLATE LOCALIZED asc"); 7 } 8 9 //查詢聯(lián)系人 10 private class MyAsyncQueryHandler extends AsyncQueryHandler { 11 12 public MyAsyncQueryHandler(ContentResolver cr) { 13 super(cr); 14 } 15 16 @Override 17 protected void onQueryComplete(int token, Object cookie, Cursor cursor) { 18 //TODO something 19 } 20 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/androidxiaoyang/archive/2013/02/19/2916555.html

總結(jié)

以上是生活随笔為你收集整理的AsyncQueryHandler了解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。