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
2. 先implements LoaderManager.LoaderCallBack並實踐其方法
3. 主要會有三個方法
onCreateLoader() : 回傳指定ID的新Loader。
onLoadFinished() : Loader建立完成後會執行。
onLoaderReset() : 重新載入Loader時執行,這邊會清掉之前的資料。
4. 接著呼叫getSupportLoaderManager().initLoader
5. 在onCreaterLoader把Loader傳入
6. onLoadFinished則是設定新的cursor
而onLoaderReset則是要把舊資料清空
留言列表