Android Loader 機(jī)制淺談

一往扔, 數(shù)據(jù)訪問的常用模式

大家都知道在android里訪問數(shù)據(jù)逾礁,以及一些耗時的操作是不能放在主線程去做的移宅,所以我們都知道使用異步的鲫售。有關(guān)異步加載數(shù)據(jù)常用的有以下幾種

備注: 以上我是總結(jié)出來目前市場上常用的異步加載處理模式硝拧。

二径筏, Android Loader的優(yōu)點(diǎn)

Android Loader簡介:

Android的裝載器(loader)是從Android 3.0新引入的API , 主要完成單線程耗時數(shù)據(jù)異步裝載功能,并在數(shù)據(jù)有更新自動通知UI刷新的作用障陶。業(yè)內(nèi)也叫加載器滋恬,裝載機(jī),Loader一般用在Activity和fragment異步加載數(shù)據(jù)抱究,無需重新啟動一個線程來執(zhí)行數(shù)據(jù)加載恢氯,異步加載可以用asyncTask 但是loader自帶數(shù)據(jù)結(jié)果監(jiān)聽機(jī)制,可以進(jìn)行UI更新鼓寺。

官方介紹:

A class that performs asynchronous loading of data. While Loaders are active they should monitor the source of their data and deliver new results when the contents change. SeeLoaderManagerfor more detail.

Android Loader 優(yōu)點(diǎn):

適用于任何Activity和Fragment勋拟;

提供了異步加載數(shù)據(jù)的機(jī)制;

檢測數(shù)據(jù)源妈候,當(dāng)數(shù)據(jù)源內(nèi)容改變時它們能夠傳遞新的結(jié)果指黎;

當(dāng)配置改變后需要重新創(chuàng)建時,它們會重新連接到最后一個loader的游標(biāo)州丹。這樣醋安,它們不需要重新查詢它們的數(shù)據(jù)。

在Activity配置發(fā)生變化(如橫豎屏切換)>時不用重復(fù)加載數(shù)據(jù)

三墓毒, Android Loader架構(gòu)

Loader

只是一個實(shí)例吓揪,一個執(zhí)行體。他依賴于loaderManager的管理所计。LoaderManager擔(dān)起對loader的管理柠辞,肩負(fù)起fragement

和activity之間如何在loader之間貫穿起來。有人說LoaderManager是一個抽象類主胧,里面定義了各種方法叭首。而官方文檔則稱

LoaderMagaer是一個接口习勤。其實(shí)不去在意這些定義。我們明顯可以感覺到焙格。Loader的創(chuàng)建图毕,使用,銷毀肯定都是LoaderManager去

定義的眷唉。一個LoaderManager可以管理多個loader予颤。另外,loader的實(shí)現(xiàn)不會自己去實(shí)現(xiàn)而是委托自己的子類去實(shí)現(xiàn)冬阳。

AsyncTaskLoader 和 CursorLoader

四蛤虐,AsyncTaskLoader 詳解

AsyncTaskLoader是loader的一個子類。是一個抽象類肝陪。提供了AsyncTask驳庭。

Publick的方法如下圖:

更多:https://developer.android.com/reference/android/content/AsyncTaskLoader.html

五,AsyncTaskLoader Demo

以獲取當(dāng)前手機(jī)安裝成功的app為例氯窍,講關(guān)鍵代碼:

新建一個loader繼承AsyncTaskLoader:

把loader傳給app的實(shí)體類通過構(gòu)造函數(shù)把loader拿到然后獲取app的icon:


在自己創(chuàng)建的appadapter里面設(shè)置需要的icon和label

說明:demo是基于官方寫的饲常,完美體現(xiàn)了AsyncTaskLoader的加載和及時刷新的效果≤衤浚可以卸載一個程序,demo會立馬自己刷新數(shù)據(jù)展現(xiàn)贯城。

AppListFragment會實(shí)現(xiàn)loader的callback接口實(shí)現(xiàn)onLoaderReset方法刷新頁面數(shù)據(jù)熊楼。有需要的可以私我要完整demo

Demo效果:

六,CursorLoader 詳解

CursorLoader又是AysncTaskLoader的一個子類能犯。查詢ContentResolve并且返回一個Cursor鲫骗。可以說CursorLoader

是一個很牛的查詢工具踩晶。以一種標(biāo)準(zhǔn)的方式實(shí)現(xiàn)了loader的接口执泰。

相對于AysncTaskLoader的實(shí)例demo簡單些,只是對手機(jī)通訊錄做個查詢展現(xiàn):

查詢耗時的操作直接放到onLoadInBackground方法里做但是這里只是返回了一個cursor渡蜻。處理要onLoadFinish里做:

說明:同樣如果有刪除术吝,更新操作會在onLoaderReset里面實(shí)現(xiàn)。具體demo可以私下找我要

網(wǎng)上有很多關(guān)于loader的資料茸苇,本人只建議去看官網(wǎng)排苍,官網(wǎng)更全面:

https://developer.android.com/reference/android/content/Loader.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市学密,隨后出現(xiàn)的幾起案子淘衙,更是在濱河造成了極大的恐慌,老刑警劉巖腻暮,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彤守,死亡現(xiàn)場離奇詭異毯侦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)具垫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門侈离,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人做修,你說我怎么就攤上這事霍狰。” “怎么了饰及?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵蔗坯,是天一觀的道長。 經(jīng)常有香客問我燎含,道長宾濒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任屏箍,我火速辦了婚禮绘梦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赴魁。我一直安慰自己卸奉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布颖御。 她就那樣靜靜地躺著榄棵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪潘拱。 梳的紋絲不亂的頭發(fā)上疹鳄,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機(jī)與錄音芦岂,去河邊找鬼瘪弓。 笑死,一個胖子當(dāng)著我的面吹牛禽最,可吹牛的內(nèi)容都是我干的腺怯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼川无,長吁一口氣:“原來是場噩夢啊……” “哼瓢喉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舀透,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤栓票,失蹤者是張志新(化名)和其女友劉穎养篓,沒想到半個月后独郎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浦箱,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缰盏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坠狡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片继找。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖逃沿,靈堂內(nèi)的尸體忽然破棺而出婴渡,到底是詐尸還是另有隱情,我是刑警寧澤凯亮,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布边臼,位于F島的核電站,受9級特大地震影響假消,放射性物質(zhì)發(fā)生泄漏柠并。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一富拗、第九天 我趴在偏房一處隱蔽的房頂上張望臼予。 院中可真熱鬧,春花似錦啃沪、人聲如沸粘拾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缰雇。三九已至,卻和暖如春签餐,著一層夾襖步出監(jiān)牢的瞬間寓涨,已是汗流浹背盯串。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工氯檐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人体捏。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓冠摄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親几缭。 傳聞我的和親對象是個殘疾皇子河泳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容