Android Loader詳解二:使用載入器

來源:互聯網
上載者:User

一個使用裝載器的應用會典型的包含如下組件:

  • 一個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()保證一個裝載器被初始化並啟用.它具有兩種可能的結果:

  • 如果ID所指的裝載器已經存在,那麼這個裝載器將被重用.

  • 如果裝載器不存在,initLoader()就觸發LoaderManager.LoaderCallbacks的方法onCreateLoader().這是你執行個體化並返回一個新裝載器的地方.

在這兩種情況中,傳入的LoaderManager.LoaderCallbacks的實現都與裝載器綁定在一起.並且會在裝載器狀態變化時被調用.如果在調用這個方法時,調用者正處於啟動狀態,並且所請求的裝載器已存在併產生了資料,那麼系統會馬上調用onLoadFinished()(也就是說在initLoader()還在執行時).所以你必須為這種情況的發生做好準備.

注意initLoader()返回所建立的裝載器,但是你不需儲存一個對它的引用.LoaderManager自動管理裝載器的生命.LoaderManager會在需要時開始和停止裝載動作,並且維護裝載器的狀態和它所關聯的內容.這意味著,你很少與裝載器直接互動.你通常都是使用LoaderManager.LoaderCallbacks的方法們在某個事件發生時介入到資料載入的過程中.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.