撕开奶罩疯狂揉吮奶头_天堂69堂在线精品视频软件_亚洲中文av一区二区三区_成人无码A片一区二区三区免费看_日韩欧美亚_天天干天天操

18842388900

網站建設 APP開發 小程序

Article/文章

記錄成長點滴 分享您我感悟

您當前位置>首頁 > 知識 > 網站建設

延遲加載片段

當我們進行應用程序開發時,Activity可以將viewpager(或其他容器)與多個Fragment結合使用,如果每個片段需要加載數據,在本地加載,或從網絡加載,那么當這個活動只是創建后,有必要初始化大量資源。當然,我們不會對這個結果感到滿意。那么,切換到這個片段時可以初始化嗎?

答案在Fragment的setUserVisibleHint方法中。請在Fragment中查看此方法的API文檔(國內圖片地址:http://zdz.la/YrpKlu):

[普通]視圖plaincopySetahinttothesystemaboutwhetherthisfragment'sUIiscurrentlyvisibletotheuser.Thishintdefaultstotrueandispersistentacrossfragmentinstancestatesaveandrestore.Anappmaysetthistofalsetoindicatethatthefragment'sUIisscrolledoutofvisibilityorisotherwisenotdirectlyvisibletotheuser.Thismaybeusedbythesystemtoprioritizeoperationssuchasfragmentlifecycleupdatesorloaderorderingbehavior.ParametersisVisibleToUsertrueifthisfragment'sUIiscurrentlyvisibletotheuser(默認值),falseifitisnot。

此方法用于告知系統此片段的UI是否可見。因此我們只需要繼承Fragment并重寫該方法,以便在片段可見時執行數據加載操作,即片段的延遲加載。

代碼如下:

[java] view plaincopy/** Date: 14-7-17 * Project: Access-Control-V2 */packagecn.irains.access_control_v2.common; importandroid.support.v4.app.Fragment;/***作者: msdx (645079761@qq.com)*時間: 14-7-17 PM 5: 46 */publicabstractclassLazyFragmentextendsFragment {protectedbooleanisVisible;/***在此處實現片段數據的緩慢加載。* @ paramisVisibleToUser */@ OverridepublicvoidsetUserVisibleHint(booleanisVisibleToUser){super。 setUserVisibleHint(isVisibleToUser);如果(getUserVisibleHint()){ISVISIBLE=TRUE; onVisible();}其他{ISVISIBLE=FALSE; onInvisible();}} protectedvoidonVisible(){lazyLoad();} protectedabstractvoidlazyLoad(); protectedvoidonInvisible() 在LazyFragment中,我添加了三個方法,一個是onVisiable,當fragment設置為visible時調用,一個是onInvisible,當fragment設置為不可見時調用。還寫了一個lazyLoad的抽象方法,在onVisible中調用。您可能會想,為什么不直接在getUserVisibleHint中調用它?

我寫這個代碼重用。因為在片段中,我們還需要創建一個視圖(onCreateView()方法),并且當它不可見時可能需要執行其他小的初始化操作(例如初始化需要通過AIDL調用的遠程服務)。在onCreateView之前調用setUserVisibleHint,然后在未初始化視圖時,如果在lazyLoad中使用,則會出現空指針異常。通過將lazyLoad拉入方法,其子類可以執行此操作:

[java] view plaincopypublicclassOpenResultFragmentextendsLazyFragment {//flag,該標志已初始化。 privateBooleanisPrepared; @OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){Log.d(LOG_TAG,'onCreateView'); Viewview=inflater.inflate(R.layout.fragment_open_result,container,false); //XXX初始化視圖控件isPrepared=True ; lazyLoad(); returnview;} @ OverrideprotectedvoidlazyLoad(){if(!isPrepared ||!isVisible){return;} //填寫每個控件的數據}}

在上面的類中,我們添加了一個標志isPrepared來指示初始化是否完成。然后,在我們需要的初始化操作完成之后,如上例所示,在初始化視圖之后,將isPrepared設置為true并調用lazyLoad()方法。在lazyLoad()中,確定只要一個不為真,就不會執行isPrepared和isVisible。也就是說,只有在初始化完成并且可見時才繼續加載,這避免了由于使用未初始化而引起的問題。

這里我介紹片段延遲加載的實現。如果您感興趣,可以基于此進一步探索它,例如編寫具有緩慢初始化和可見刷新的片段。

標簽:& nbsp& nbspapp開發和應用程序設計& nbspFragment延遲加載

網站建設,小程序開發,小程序制作,微信小程序開發,公眾號開發,微信公眾號開發,網頁設計,網站優化,網站排名,網站設計,微信小程序設計,小程序定制,微信小程序定制

相關案例查看更多

主站蜘蛛池模板: 亚洲性在线 | 成人ucjizz视频 | 成视频年人黄网站免费视频 | 中文字幕熟妇人妻在线视频 | 中文字幕一区二区三区久久网站 | 国产成人A级毛片 | 久久久久久久久国产成人免费 | 欧美大黑帍在线播放 | 亚洲欧美国产一区二区三区 | 双性清冷美人被老肥丑攻c哭 | JIZZ成熟少妇偷人 | 亚洲熟妇AV日韩熟妇在线 | 青青草激情 | 日韩精品一区二区三区VR | 日韩a无码av一区二区三区 | 亚洲av午夜福利精品一区人妖 | 成a人片亚洲日本久久 | 欧美黑人添添高潮A片视频 欧美成人精品A片免费一区99 | 国产在线麻豆精品入口 | 日本不卡新2区 | 97干色| 亚洲乱码中文字幕综合 | 自拍性旺盛老熟女 | 欧美人与拘牲交大全视频 | 日本久久久久久级做爰片 | 成人国内精品久久久久影院 | 国产精品伦一区二区三区在线观看 | 国产免费传媒av片在线 | 国产欧美一区二区三区免费看 | 国产偷国产偷亚洲高清人白洁 | 中文欧美日韩 | 欧美私人家庭影院 | 亚洲一本之道高清在线观看 | 日韩欧美一区二区在线视频 | 国产精品国产对白熟妇 | 狠狠色丁香五月综合缴情婷婷五月 | 无码纯肉视频在线观看喷水 | 久久国产精品免费一区二区三区 | 亚洲精品中文字幕无码av | 久久色视频 | 下个黄色片|