一個使用裝載器的應用會典型的包含如下組件:
一個Activity或Fragment.
一個LoaderManager的執行個體.
一個載入被ContentProvider所支援的資料的CursorLoader.或者,你可以從Loader或AsyncTaskLoader實現你自己的裝載器來從其它源載入資料.
一個LoaderManager.LoaderCallbacks的實現.這是你建立新的裝載器以及管理你的已有裝載器的引用的地方.
一個顯示裝載器的資料的途徑,例如使用一個SimpleCursorAdapter.
一個資料來源,比如當是用CursorLoader時,它將是一個ContentProvider.
啟動一個裝載器
LoaderManager管理一個Activiry或Fragment中的一個或多個裝載器.但每個activity或fragment只擁有一個LoaderManager.
你通常要在activity的onCreate()方法中或fragment的onActivityCreated()方法中初始化一個裝載器.你可以如下建立:
// 準備裝載器.可以重連一個已經存在的也可以啟動一個新的.<br />getLoaderManager().initLoader(0,null, this);
initLoader()方法有以下參數:
一個唯一ID來標誌裝載器.在這個例子中,ID是0.
可選的參數,用於裝載器初始化時(本例中是null).
一個LoaderManager.LoaderCallbacks的實現.被LoaderManager調用以報告裝載器的事件,在這個例子中,類本實現了這個介面,所以傳的是它自己:this.
initLoader()保證一個裝載器被初始化並啟用.它具有兩種可能的結果:
在這兩種情況中,傳入的LoaderManager.LoaderCallbacks的實現都與裝載器綁定在一起.並且會在裝載器狀態變化時被調用.如果在調用這個方法時,調用者正處於啟動狀態,並且所請求的裝載器已存在併產生了資料,那麼系統會馬上調用onLoadFinished()(也就是說在initLoader()還在執行時).所以你必須為這種情況的發生做好準備.
注意initLoader()返回所建立的裝載器,但是你不需儲存一個對它的引用.LoaderManager自動管理裝載器的生命.LoaderManager會在需要時開始和停止裝載動作,並且維護裝載器的狀態和它所關聯的內容.這意味著,你很少與裝載器直接互動.你通常都是使用LoaderManager.LoaderCallbacks的方法們在某個事件發生時介入到資料載入的過程中.