Fragment懒加载数据

Fragment懒加载可解决如下:一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而每个Fragment都需要去加载数据,或从本地加载、或从网络加载,那么在Activty刚创建的时候就会初始化大量的资源,会变得卡慢。Fragment可见时,才执行加载数据的操作,即Fragment的懒加载,setUserVisibleHint判断是否可见。

public abstract class LazyFragment extends Fragment {  
14.    protected boolean isVisible;  
15.    /** 
16.     * 在这里实现Fragment数据的缓加载. 
17.     * @param isVisibleToUser 
18.     */  
19.    @Override  
20.    public void setUserVisibleHint(boolean isVisibleToUser) {  
21.        super.setUserVisibleHint(isVisibleToUser);  
22.        if(getUserVisibleHint()) {  
23.            isVisible = true;  
24.            onVisible();  
25.        } else {  
26.            isVisible = false;  
27.            onInvisible();  
28.        }  
29.    }  
30.  
31.    protected void onVisible(){  
32.        lazyLoad();  
33.    }  
34.  
35.    protected abstract void lazyLoad();  
36.  
37.    protected void onInvisible(){}  
38.}  
public class OpenResultFragment extends LazyFragment{  
02.    // 标志位,标志已经初始化完成。  
03.    private boolean isPrepared;  
04.  
05.    @Override  
06.    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
07.        Log.d(LOG_TAG, "onCreateView");  
08.        View view = inflater.inflate(R.layout.fragment_open_result, container, false);  
09.        //XXX初始化view的各控件  
10.    isPrepared = true;  
11.        lazyLoad();  
12.        return view;  
13.    }  
14.  
15.    @Override  
16.    protected void lazyLoad() {  
17.        if(!isPrepared || !isVisible) {  
18.            return;  
19.        }  
20.        //填充各控件的数据  
21.    }  
22.  
23.}  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值