Activity中加载器的总结
繼續(xù)總結(jié)加載器
加載器可以支持在Activity或片段中異步加載數(shù)據(jù),加載器具有以下特征:
可用于每個Activity和Fragment;
支持異步加載數(shù)據(jù);
監(jiān)控其數(shù)據(jù)源并在內(nèi)容變化時傳遞新結(jié)果;
在某一配置更改后重建加載器時,會自動重新連接上一個加載器的游標,故無需重新查詢其數(shù)據(jù)。
在應(yīng)用中使用加載器:
使用加載器的應(yīng)用通常包括:
*Activity或Fragment
*LoaderManager的實例
*一個CursorLoader,用于加載由ContentProvider支持的數(shù)據(jù),可以實現(xiàn)自己的Loader或AsyncTaskLoader子類,從其他源中加載數(shù)據(jù)
*一個LoaderManager.LoaderCallbacks實現(xiàn),可以使用它來創(chuàng)建新加載器,并管理對現(xiàn)有的加載器的引用。
*一個顯示加載器數(shù)據(jù)的方法,如SimpleCursorAdapter。
*使用CursorLoader時的數(shù)據(jù)源,如ContentProvider。
啟動加載器:
LoaderManager可在Activity或Fragment內(nèi)管理一個或多個Loader實例,每個Activity或片段中只有一個LoaderManager。為了初始化加載器以及實現(xiàn)一個Loader類(如CursorLoader),始終需要引入LoaderManager。
通常,在Activity的onCreate()方法或片段的onActivityCreated()方法內(nèi)初始化Loader。
getLoaderManager().initLoader(0,null,this);initLoader()方法采用以下參數(shù):*用于標識加載項的唯一ID,此例中ID為0
*在構(gòu)建時提供給加載器的可選參數(shù),此例中為null
*LoaderManager.LoaderCallbacks實現(xiàn),LoaderManager將調(diào)用此實現(xiàn)來報告加載器事件,此例中,本地實現(xiàn)LoaderManager.LoaderCallbacks接口,故它會傳遞對自身的引用this。
initLoader()調(diào)用確保加載器已初始化且處于活動狀態(tài),將可嫩有兩種結(jié)果:
*若ID指定的加載器已存在,則將重復(fù)使用上次創(chuàng)建的加載器。
*若ID指定的加載器不存在,則initLoader()將觸發(fā)LoaderManager.LoaderCallbacks方法onCreateLoader().
重啟加載器:
當(dāng)使用initLoader()時,將使用含有指定ID的現(xiàn)有加載器,若沒有,則會創(chuàng)建一個,但有時,想舍棄這些舊數(shù)據(jù)并重新開始的話,調(diào)用restartLoader()。例如,當(dāng)用戶查詢更改時,此SearchView.OnQueryTextListener實現(xiàn)將重啟加載器,以便它能夠使用修訂后的搜索過濾器執(zhí)行新查詢:
public boolean onQueryTextChanged(String newText) {mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;getLoaderManager().restartLoader(0, null, this);return true; }使用LoaderManager回調(diào):
LoaderManager.LoaderCallback是一個支持客戶端與LoaderManager交互的回調(diào)接口。
加載器(特別是CursorLoader)在停止運行后,仍需保持其數(shù)據(jù),這樣,應(yīng)用即可保留Activity或片段的onStop()和onStart()方法中的數(shù)據(jù)。當(dāng)用戶返回應(yīng)用時,無需等待重新加載這些數(shù)據(jù),可以使用LoaderManager.LoaderCallback方法了解何時創(chuàng)建新加載器,并告知應(yīng)用何時停止使用加載器的數(shù)據(jù)。LoaderManager.LoaderCallbacks包括以下方法:
onCreateLoader()---針對指定的ID進行實例化并返回新的Loader
onLoadFinished()---將在先前創(chuàng)建的加載器完成加載時調(diào)用
onLoaderReset()---將在先前創(chuàng)建的加載器重置且數(shù)據(jù)因此不可用時調(diào)用?
總結(jié)
以上是生活随笔為你收集整理的Activity中加载器的总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中Activity总结
- 下一篇: Activity中的任务和返回站