Fragment懒加载

本文介绍了一种实现Fragment懒加载的方法,通过定义抽象类`LazyFragment`来管理Fragment的视图状态和数据加载时机,确保只有当Fragment可见且数据未被加载时才进行数据请求。

1.懒加载Fragment:

 1 public abstract class LazyFragment extends Fragment {
 2     boolean isViewPrepared; // 标识fragment视图已经初始化完毕
 3     boolean hasFetchData; // 标识已经触发过懒加载数据
 4 
 5 
 6     @Override
 7     public void setUserVisibleHint(boolean isVisibleToUser) {
 8         super.setUserVisibleHint(isVisibleToUser);
 9         if (isVisibleToUser) {//当当前为显示页面时
10             lazyFetchDataIfPrepared();
11         }
12     }
13 
14     @Override
15     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
16         super.onViewCreated(view, savedInstanceState);
17         isViewPrepared = true;
18     }
19 
20     @Override
21     public void onActivityCreated(@Nullable Bundle savedInstanceState) {
22         super.onActivityCreated(savedInstanceState);
23         lazyFetchDataIfPrepared();
24     }
25 
26     void lazyFetchDataIfPrepared() {
27         // 用户可见fragment && 没有加载过数据 && 视图已经准备完毕
28         if (getUserVisibleHint() && !hasFetchData && isViewPrepared) {
29             hasFetchData = true; //已加载过数据
30             lazyFetchData();
31         }
32     }
33 
34     //获得数据操作
35     abstract void lazyFetchData();
36 }

 

转载于:https://www.cnblogs.com/jeffery336699/p/9289112.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值