我們在做應用開發的時候,乙個activity裡面可能會以viewpager(或其他容器)與多個fragment來組合使用,而如果每個fragment都需要去載入資料,或從本地載入,或從網路載入,那麼在這個activity剛建立的時候就變成需要初始化大量資源。這樣的結果,我們當然不會滿意。那麼,能不能做到當切換到這個fragment的時候,它才去初始化呢?
該方法用於告訴系統,這個fragment的ui是否是可見的。所以我們只需要繼承fragment並重寫該方法,即可實現在fragment可見時才進行資料載入操作,即fragment的懶載入。
在lazyfragment,我增加了三個方法,乙個是onvisiable,即fragment被設定為可見時呼叫,乙個是oninvisible,即fragment被設定為不可見時呼叫。另外再寫了乙個lazyload的抽象方法,該方法在onvisible裡面呼叫。你可能會想,為什麼不在getuservisiblehint裡面就直接呼叫呢?
我這麼寫是為了**的復用。因為在fragment中,我們還需要建立檢視(oncreateview()方法),可能還需要在它不可見時就進行其他小量的初始化操作(比如初始化需要通過aidl呼叫的遠端服務)等。而setuservisiblehint是在oncreateview之前呼叫的,那麼在檢視未初始化的時候,在lazyload當中就使用的話,就會有空指標的異常。而把lazyload抽離成乙個方法,那麼它的子類就可以這樣做:
Android入門之01術語Fragments
在android的早期,當它僅在手機上執行且沒有高解析度螢幕時,activity就足以構成ui並與使用者進行互動。然後是平板電腦和高解析度螢幕,建立在手機和平 板電腦上都能正常執行的應用程式變得越來越困難。開發人員面臨艱難的選擇。您選擇功能最弱的硬體作為目標,使其成為最不常見的分母,或者通過根據裝置...
android高階應用
android activity service broadcaster三大元件之間互相呼叫 service實時向activity傳遞資料案例 android service獲取當前位置 gps 基站 四十七 實現呼叫android手機的拍照功能 四十六 android中的bitmap 四十五 an...
Android基礎 高階
android基礎 android核心元件之activity fragment簡介和使用例項 android核心元件之service 使用aidl實現程序間的通訊 android核心元件之broadcastreceiver android核心元件之contentprovider 一 初步學習 adn...