多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > AsyncQueryHandler異步操作數(shù)據(jù)庫的使用和源碼解析

AsyncQueryHandler異步操作數(shù)據(jù)庫的使用和源碼解析

來源:程序員人生   發(fā)布時間:2016-09-03 15:45:03 閱讀次數(shù):2974次

1.AsyncQueryHandler的作用:

異步的查詢操作幫助類,它可以處理增刪改查。固然也能夠使用ContentProvider去操作數(shù)據(jù)庫。這在數(shù)據(jù)量很小的時候是沒有問題的,但是如果數(shù)據(jù)量大了,可能致使UI線程產(chǎn)生ANR事件。固然也能夠?qū)憘€Handler去做這些操作,只是每次使用ContentProvider時都要再寫個Handler,必定下降了效力。因此API提供了1個操作數(shù)據(jù)庫的通用方法。它提供:startInsert,startDelete,startUpdate,startQuery這4個操作,并提供相對應(yīng)的onInsertComplete,onDeleteComplete,onUpdateComplete,onQuerytComplete4個方法,以供操作完數(shù)據(jù)庫落后行其它的操作,這4個 onXXXComplete方法都是空實現(xiàn),以便我們只需要去實現(xiàn)我們關(guān)注的操作。
 

2.AsyncQueryHandler的使用方法:

1.需要繼承AsyncQueryHandler類,并提供onInsertComplete方法的實現(xiàn)(可以實現(xiàn)任何1個或多個,固然也能夠1個也不實現(xiàn),如果你不關(guān)注操作數(shù)據(jù)庫的結(jié)果),在的實現(xiàn)中做1些對數(shù)據(jù)庫操作完成的處理。
2.使用時直接調(diào)用startQuery(或其他4個中的任何1個)方法便可。傳入的通用參數(shù)以下:
token,1個令牌,需要跟onQueryComplete方法傳入的1致。(固然也能夠不1致,一樣在數(shù)據(jù)庫的操作結(jié)束后會調(diào)用對應(yīng)的onQueryComplete方法 )。
cookie,你想傳給onQueryComplete方法使用的1個對象。(沒有的話傳遞null便可)。
Uri uri(進(jìn)行查詢的通用資源標(biāo)志符)。
projection 查詢的列
selection  限制條件
orderBy 排序條件

3.使用處景:

異步操作數(shù)據(jù)庫,在主線程回調(diào)更新ui.
要注意的是,1般在查詢本地的利用的數(shù)據(jù)的時候要去采取CursorAdapter。


4、AsyncQueryHandler內(nèi)部實現(xiàn)

AsyncQueryHandler類封裝了調(diào)用者線程與工作線程的交互進(jìn)程。交互的主體是兩個Handler,1個運行在調(diào)用者線程中,1個運行在工作者線程中。通過提供onXXXComplete的回調(diào)接口,實現(xiàn)事件的完成處理。
API中提供
startInsert,
startDelete,
startUpdate,
startQuery4種方法,并有響應(yīng)的onXXXComplete()方法.于對應(yīng)的4個onXXXComplete()方法都是空實現(xiàn),因此我們完成相應(yīng)調(diào)用落后行后續(xù)其他的操作. 

mWorkerThreadHandler是在工作線程中的handler,

AsyncQueryHandler 本身也是個handler,是在主線程中

public abstract class AsyncQueryHandler extends Handler

if (sLooper == null) { HandlerThread thread = new HandlerThread("AsyncQueryWorker"); thread.start(); sLooper = thread.getLooper(); } } mWorkerThreadHandler = createHandler(sLooper);

發(fā)起操作以后,從主線程通過handler拋到工作線程,工作線程在非主線程完成相干數(shù)據(jù)庫操作,將結(jié)果拋回主線程


5、簡單代碼示例

private void startQuery() { Uri uri = Sms.CONVESATION_URI; mQueryHandler.startQuery(0, null, uri, CONVERSATION_PROJECTION, null, null, "sms.date desc"); } // 寫1個異步查詢類 private final class QueryHandler extends AsyncQueryHandler { public QueryHandler(ContentResolver cr) { super(cr); } @Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { super.onQueryComplete(token, cookie, cursor); // 更新mAdapter的Cursor mAdapter.changeCursor(cursor); } }




歡迎掃描2維碼,關(guān)注公眾號



生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品亚洲片在线观看麻豆 | 精品一区二区三区自拍图片区 | 久久一级 | 99久久精品国产综合一区 | 午夜啪啪免费视频 | 成人亚洲网 | 男女爱爱免费网站视频在线观看 | 色视频2 | 图片区小说区欧洲区 | ppypp日本欧美一区二区 | 成人国产一区 | 波多野结衣在线播放视频 | 成人a一级毛片免费看 | 精品国产一区二区三区www | 爽a中文字幕一区 | 欧美黑人ⅹxxx另类猛交 | 欧美一区二区在线观看免费网站 | 亚洲在线中文字幕 | 欧美日韩国产成人精品 | 2018久久久国产精品 | 在线婷婷 | www.97影院| 国产高清在线看免费视频观 | jizz毛片| 国产精品反差婊在线观看 | 亚州五月天 | 亚洲视频在线网 | 国产一区二区在线视频 | 性生活免费视频网站 | 国产亚洲精品国产福利在线观看 | 性生交大片免费一级 | 日韩一区在线视频 | 国产精品久久久久影院免费 | 老司机av | 精品国产乱码久久久久久一区二区 | 国产成人欧美一区二区三区的 | 欧美日韩国产不卡在线观看 | 国产欧美日韩一区二区三区 | 国产精品自产拍在线观看 | 伊人久久大香线蕉亚洲 | 国产高清一区二区三区 |