1. 程式人生 > >Android Viewpager+Fragment的懶載入優化問題

Android Viewpager+Fragment的懶載入優化問題

我們在做應用開發的時候,一個Activity裡面可能會以viewpager(或其他容器)與多個Fragment來組合使用,而如果每個fragment都需要去載入資料,或從本地載入,或從網路載入,那麼在這個activity剛建立的時候就變成需要初始化大量資源。這樣的結果,我們當然不會滿意。那麼,能不能做到當切換到這個fragment的時候,它才去初始化呢?

答案就在Fragment裡的setUserVisibleHint這個方法裡。請看關於Fragment裡這個方法的API文件(國內映象地址:Fragment api):

1 2 3 4 Set a hint to the system about whether this fragment's UI is currently visible to the user. This hint defaults to true and is persistent across fragment instance state save and restore. An app may set this to false to indicate that the fragment's UI is scrolled out of visibility or is otherwise not directly visible to the user. This may be used by the system to prioritize operations such as fragment lifecycle updates or loader ordering behavior.
Parameters isVisibleToUser true if this fragment's UI is currently visible to the user (default), false if it is not.

該方法用於告訴系統,這個Fragment的UI是否是可見的。所以我們只需要繼承Fragment並重寫該方法,即可實現在fragment可見時才進行資料載入操作,即Fragment的懶載入。
程式碼如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 /* * Date: 14-7-17 * Project: Access-Control-V2 */ package cn.irains.access_control_v2.common; import android.support.v4.app.Fragment; /** * Author: msdx ([email protected]) * Time: 14-7-17 下午5:46 */ public abstract class LazyFragment extends Fragment { protected boolean isVisible; /** * 在這裡實現Fragment資料的緩載入. * @param isVisibleToUser */ @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if(getUserVisibleHint()) {

相關推薦

AndroidFragment載入

還記得以前使用ViewPager+Fragment時根本不考慮效率問題,一股腦的多頁資料載入導致卡死,還自我安慰說我設定了setOffscreenPageLimit了啊,而實際上跟蹤原始碼我們發現DEFAULT_OFFSCREEN_PAGES = 1,所以即便s

TabLayout+ViewPager+Fragment載入實現

tablayout的使用 TabLayout是在design下的包中,一般跟viewpager,fragment結合使用; <?xml version="1.0" encoding

Android Viewpager+Fragment載入優化問題

我們在做應用開發的時候,一個Activity裡面可能會以viewpager(或其他容器)與多個Fragment來組合使用,而如果每個fragment都需要去載入資料,或從本地載入,或從網路載入,那麼在這個activity剛建立的時候就變成需要初始化大量資源。這樣的結果

Android使用setUserVisibleHint()實現Fragment載入

Fragment 懶載入使用場景 當使用viewpager+adapter作為應用大的佈局時,viewpager會通過setOffscreenPageLimit來設定預載入的專案,不設定setOffscreenPageLimit,則預設為1(設定0無效,可以檢視該方法原始碼知道),也就是

Android多個fragment載入的坑(卡頓)

在Android開發中,有很多種情況都是viewpage+fragment左右滑動進行佈局的,例如下面的今日頭條 在今日頭條app上,我們可以看到,其頂部都是一欄的型別資料來源,可滑動,可聯動下面的viewpage裡的fragment,但是很多時候,viewpage+fragment中

Android viewpager+fragment實現動態載入碎片(fragment重複使用)

    距離上次發部落格好像已經至少有兩個月的時間了,不禁感嘆時間過得真快,也是因為專案一直在忙,所以沒來發部落格,今天有閒情就來一發。好了,廢話不多說,今天講的是fragment複用的問題,提到碎片,相信大家都不陌生,fragment寄宿於Activity,依activi

android Fragment載入,當頁面可見時載入資料

// 儲存之前的介面,否則會重新呼叫onCreateView viewPager.setOffscreenPageLimit(fragmentList.size()); fragm

android viewpager+fragment 避免預載入,快取

一、需求是這樣的:滑動到哪一頁就在家一頁的資料,避免預載入二、由於使用setOffScreenLimit無效解決辦法:<span style="color:#ff6666;">注意:setUserVisibleHint,使用這個方法來完成切換到哪一頁才載入哪一

FragmentViewpager實現載入

本文轉載自:http://blog.csdn.net/q844258542/article/details/51525749(非常感謝博主的分享) 專案當中使用到tablayout+viewpager+fragment組合, 也是現在app非常流行的一種設計. vi

【java】itoo項目實戰之hibernate 載入優化性能

bsp xtra extra pda 程序 前端框架 外連接 獲取 轉換成 在做itoo 3.0 的時候,考評系統想要上線,就開始導入數據了,僅僅導入學生2萬條數據,可是導入的速度特別的慢。這個慢的原因是由於導入的時候進行了過多的IO操作。可是導入成功之後,

Android-ViewPager+Fragment數據更新問題

!= ima pri bool content 要求 transacti new nds 由於FragmentPagerAdapter內部存在緩存。因此調用notifyDataSetChanged()並不可以去更新Fragment的內容。 參考:http://ww

ViewPager+Fragment 加載

activit svi class span you ace -1 ring rep 轉載於: 作者:尹star鏈接:http://www.jianshu.com/p/c5d29a0c3f4c來源:簡書 ViewPager+Fragment的模式再常見不過了,以國民應

Android viewPager Fragment 切換生命週期

記錄一下: 場景: 上面是一個很常見的一個切換效果:結果一般都是一個主Activity,裡面佈局了一個TabLayout+ViewPager,ViewPager裡面添加了4個Fragment,假如日期時間為A,聲音設定為B 開關機設定為C,認證模式 為D 第一步:列印一下主要的Log

Android ViewPager+Fragment 仿 Google Play

最近終於從繁忙的網路爬蟲專案中解脫出來,回到久違的Android開發崗位,有時間研究Android 4.0的一些新特性,例如Fragment和ViewPager,參考了一些他人的程式碼,做出來了Google Play 首頁的效果,在這裡跟大家分享一下! 工程目錄結構如下圖

fragment 載入2

效果 老規矩,先來看看效果 效果圖 ANDROID和福利兩個Fragment是設定的Fragment可見時載入資料,也就是懶載入。圓形的旋轉載入圖示只有一個,所以,如果當前Fragment正處於載入狀態,在離開該Fragment時需要隱藏載入動畫,因為另一個Fragment並不一定處於載入狀態,當返回F

android viewpager+fragment與利用viewpager滑動分頁小技巧

一:簡單的實現viewpage進行fragment的滑動切換 public class LcVpFragment extends Fragment{ @Override public void onActivityCreated(Bundle savedInsta

hibernate載入 優化效能, get load

屬性的延遲:我們之前在獲取一條資料的時候採用的都是Session的get方法,這種方式不是延遲載入,也就是呼叫這個方法就會立刻訪問資料庫查出此物件的資料,當我們採用Session的load方法時,採用的是屬性延遲載入,就是隻有在訪問這個物件的屬性,hibernate才會訪問資

多層巢狀後的 Fragment 載入實現

多層巢狀後的 Fragment 懶載入 印象中從 Feed 流應用流行開始,Fragment 懶載入變成了一個大家都需要關注的開發知識,關於 Fragment 的懶載入,網上有很多例子,GitHub 上也有很多例子,就連我自己在一年前也寫過相關的文章。

fragment 載入3

使用前需知 2017-7-14更新: 目前有人使用後出現了諸如首次開啟顯示空白介面,但點選有反應;或來回切換又變空白介面的問題。這些問題我暫時還不知道該怎麼解決,後期有時間時會具體去分析下問題該怎麼解決。所以你如果要使用該程式碼,希望考慮一下,我自己的小應用目前是沒碰到這些問題。 效果 老規矩,先來看看效

關於Fragment載入的學習和使用+引數傳遞的方法

這兩天做專案時,遇到一個問題,就是在ViewPager + Fragment(兩個)的巢狀中,我的兩個Fragment都有網路請求,需求是要把AFragment執行網路請求以後得到的的一個字串傳遞到BFragment中,然後BFragment再執行網路請求。 然後,這就出現