??Android3.0后提供了Loader機制,來處理數據加載的實現,你可以通過繼承AsyncTaskLoader或是CursorLoader來進行相應的數據加載操作。
??使用Loader加載主要涉及到4個類:
- Loader
定義了一個加載實現,比如啟動、暫停、取消等方法。 - LoaderInfo
指的是一個具體的加載過程,它持有一個加載實現Loader - LoaderManager
管理著多個加載過程LoaderInfo。 - LoaderManager.LoaderCallbacks
提供與外部交互的回調方法。提供具體的加載類Loader和結果的處理。
??Activity或Fragment持有LoaderManager對象,通過調用方法:
initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback)
會創建一個LoaderInfo對象,保存在SparseArray集合中,并把callback賦值給LoaderInfo。
??當Activity或fragment調用onStart方法是,會調用LoaderManager的doStart方法,會遍歷所有的LoaderInfo執行其start方法,這時通過callback的onCreateLoader方法獲取具體的加載類Loader,執行Loader的加載操作。
??LoaderInfo本身是實現Loader.OnLoadCompleteListener接口的,當Loader執行完后通過OnLoadCompleteListener通知LoaderInfo,LoaderInfo再調用callback的onLoadComplete傳遞給外部處理結果數據。
Paste_Image.png
參考
http://www.jcodecraeer.com/a/anzhuokaifa/developer/2014/0325/1602.html