close

Loader是用來控制和監控資料的好幫手

不需使用Loader的時機
a. 當你的資料是輕量可在UI Thread內快速查完
b. 已經使用AsyncTask來處理資料時

Loader
a. 本身用不同於UI Thread的方式執行
b. 可以用callback方法來簡單管理
c. 用cache機制來避免重覆查詢
d. 會使用觀察者模式來監控資料的變化並自動更新

LoaderManager : 在Activity或Fragment上使用, 用來管理Loader
LoaderManager.LoaderCallbacks : 在Activity或Fragment上實踐, 用來處理Loader的不同狀況
Loader : 用來控制資料, 通常會用AsyncTaskLoader或CursorLoader使用

LoaderManager在執行時會使用initLoader
Loader<D> initLoader (int id,
Bundle args,
LoaderCallbacks<D> callback)
id : 不能重復, 如果存在則會使用之前的Loader,
不存在時則會呼叫onCreateLoader建立一個新的
args : 攜帶進去的參數, 沒有則指定null
callback : 實踐的LoaderManager.LoaderCallbacks

Loader<D> restartLoader (int id,
Bundle args,
LoaderCallbacks<D> callback)
跟initLoader的差別只有當id重復時會把舊的刪掉, 建立一個新的

LoaderManager.LoaderCallbacks 有以下方法:
onCreateLoader() : 回傳指定ID的新Loader。
onLoadFinished() : Loader建立完成後會執行。
onLoaderReset() : 重新載入Loader時執行,這邊會清掉之前的資料。

 

1. 官網https://developer.android.com/guide/components/loaders.html

01.png

 

2. 先implements LoaderManager.LoaderCallBack並實踐其方法

02.png

 

3. 主要會有三個方法

onCreateLoader() : 回傳指定ID的新Loader。 
onLoadFinished() : Loader建立完成後會執行。 
onLoaderReset() : 重新載入Loader時執行,這邊會清掉之前的資料。

 

03.png

 

4. 接著呼叫getSupportLoaderManager().initLoader

04.png

 

5. 在onCreaterLoader把Loader傳入

05.png

 

6. onLoadFinished則是設定新的cursor

而onLoaderReset則是要把舊資料清空

06.png  

arrow
arrow
    文章標籤
    Android Loader
    全站熱搜

    RX1226 發表在 痞客邦 留言(0) 人氣()