Android tabLayout+viewPager+fragment處理懶載入
本篇文章主要解決,在我們切換tabLayout中的fragment時,防止介面被多次呼叫,接下來,直接貼碼。。。本篇完美解決了這個問題,每次進入介面才會被呼叫,也就是隻呼叫了一次
1.fragment中初始化一個變數
private boolean firstLoad = false;
2.在fragment的onCreateView中做處理
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.xxx,null);
firstLoad = true;//檢視建立完成,將變數置為true
if (getUserVisibleHint()) {//判斷Fragment是否可見
//初始化資料
initDatas();
firstLoad = false;//將變數置為false
}
return view;
}
3.判斷setUserVisibleHint()是否是第一次進入介面,當退出當前頁面時銷燬
@Override
public void onDestroyView() {
super.onDestroyView();
firstLoad = false;//檢視銷燬將變數置為false
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (firstLoad && isVisibleToUser) {//檢視變為可見並且是第一次載入
//初始化資料
initDatas();
firstLoad = false;
}
}
4.初始化資料,做資料處理
//初始化資料
private void initDatas() {
}
最後完整的程式碼,下貼:
public class LoadFragment extends Fragment{
private boolean firstLoad = false;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.xxx,null);
firstLoad = true;//檢視建立完成,將變數置為true
if (getUserVisibleHint()) {//判斷Fragment是否可見
//初始化資料
initDatas();
firstLoad = false;//將變數置為false
}
return view;
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
firstLoad = false;//檢視銷燬將變數置為false
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (firstLoad && isVisibleToUser) {//檢視變為可見並且是第一次載入
//初始化資料
initDatas();
firstLoad = false;
}
}
//初始化資料
private void initDatas() {
}
相關文章
- TabLayout+ViewPager+Fragment實現懶載入完全解決方案TabLayoutViewpagerFragment
- Tablayout+Viewpager+Fragment組合使用以及懶載入機制TabLayoutViewpagerFragment
- Android優化--Fragment懶載入Android優化Fragment
- 懶載入
- Android 在 ViewPager 中使用 Fragment 的懶載入AndroidViewpagerFragment
- 懶載入和預載入
- Ribbon - 懶載入
- 【譯】懶載入元件元件
- 圖片懶載入
- vue路由懶載入Vue路由
- Vue元件懶載入Vue元件
- Hibernate 之 懶載入
- Vue 的懶載入Vue
- 圖片預載入和懶載入
- Vue 路由按需載入(路由懶載入)Vue路由
- 前端效能優化 --- 懶載入&預載入前端優化
- 圖片懶載入(IntersectionObserver)Server
- 關於懶載入原理
- Fragment 懶載入實踐Fragment
- 懶載入之intersection observerServer
- 圖片懶載入原理
- vue(18)路由懶載入Vue路由
- 手把手實現圖片懶載入+封裝vue懶載入元件封裝Vue元件
- [譯] React 16.6 懶載入(與預載入)元件React元件
- 圖片懶載入踩坑
- 圖片懶載入大白話
- Js圖片懶載入(lazyload)JS
- 單張圖片懶載入
- 圖片懶載入實現
- dva中元件的懶載入元件
- DCL懶載入單例模式單例模式
- Laravel Eloquent中的 懶載入VS即時載入Laravel
- 頁面圖片預載入與懶載入策略
- VIM Lazy Load 懶載入/延遲載入技術
- 滾動載入圖片(懶載入)實現原理
- 1道面試題---懶載入和預載入面試題
- 圖片懶載入js實現JS
- spring註解@lazy,bean懶載入SpringBean