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