關(guān)于fragment的懶加載探析
這里涉及到的API有兩個(gè):
1. public void setUserVisibleHint(boolean isVisibleToUser)
百度搜索fragment的懶加載,往往能看到關(guān)于這個(gè)Api的介紹,大致瀏覽了幾篇文章,主要內(nèi)容有:
- setUserVisibleHint(boolean isVisibleToUser)這個(gè)方法在onCreateView()方法執(zhí)行之前執(zhí)行的,在setUserVisibleHint(boolean isVisibleToUser)中可以提前進(jìn)行網(wǎng)絡(luò)請求也就是所謂的懶加載。。。
- 需要注意的是這方法執(zhí)行的時(shí)候,不能保證布局文件初始化,所以該方法內(nèi)建議只能是純數(shù)據(jù)獲取操作。
- setUserVisibleHint(boolean isVisibleToUser)這個(gè)方法貌似只有使用ViewPager加載Fragment的時(shí)候,才會調(diào)用這個(gè)方法;創(chuàng)建一個(gè)容器,動態(tài)加載fragment,進(jìn)行顯示隱藏,這種方式這個(gè)方法不執(zhí)行。(查看源碼可以知道,這個(gè)方法是在FragmentPagerAdapter中進(jìn)行調(diào)用參考 文章)
2. onHiddenChanged(hidden: Boolean)
- 當(dāng)前mainActivity創(chuàng)建的時(shí)候,將所有Fragment都初始化創(chuàng)建對象,隱藏其他fragment,只顯示其中一個(gè)fragment的時(shí)候,被隱藏的fragment會執(zhí)行這個(gè)方法,且hidden=true,當(dāng)被隱藏的fragment進(jìn)行顯示的時(shí)候該方法也會執(zhí)行,hidden=false;
- 根據(jù)上面所述,當(dāng)hidden==false的時(shí)候,進(jìn)行數(shù)據(jù)獲取可以做到每次顯示當(dāng)前fragment的時(shí)候,都會刷新數(shù)據(jù)。
參考 setUserVisibleHint1
參考 setUserVisibleHint2
參考 onHiddenChanged
參考 onHiddenChanged和setUserVisibleHint