android——Fragment实现懒加载

本文介绍了如何在Android中实现Fragment的懒加载,以减少Activity的初始化操作。通过覆写setUserVisibleHint()方法,在Fragment可见时执行加载操作,避免在onCreateView()前引发空指针异常。同时,列举了Fragment的其他关键生命周期方法,如onAttach(), onCreateView(), onActivityCreated(), onDestroyView()和onDetach()." 100496928,9025822,ZigBee无线传感网络在农业光照度监控中的应用,"['物联网技术', '无线通信', '农业自动化', 'ZigBee协议', '嵌入式系统']
摘要由CSDN通过智能技术生成

效果:

  Activity中ViewPager嵌套多个Fragment.当切换到这个这个Fragment时才进行初始化,减少Activity初始化操作

方法:

   setUserVisibleHint方法是判断Fragment中的UI控件是否可见的。可以自行实现,在UI控件可见时进行加载的操作。注:setUserVisibleHint是在onCreateView之前调用的。所以,在该方法中,必须先判断是否find some view,在做具体操作,防止空指针。

模板:

public abstract class LazyFragment extends Fragment {
    protected boolean isVisible;
  
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if(getUserVisibleHint()) {
            isVisible = true;
            onVisible();
        } else {
            isVisible = false;
            onInvisible();
        }
    }
    protected void onVisible(){
        lazyLoad();
    }
    protected abstract void lazyLoad();
    protected void onInvisible(){}
}
public class OpenResultFragment extends LazyFragment{
    // 标志位,标志已经初始化完成。
    private boolean isPrepared;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.d(LOG_TAG, "onCreateView");
        View view = inflater.inflate(R.layout.fragment_open_result, container, false);
        //XXX初始化view的各控件
    isPrepared = true;
        lazyLoad();
        return view;
    }
    @Override
    protected void lazyLoad() {
        if(!isPrepared || !isVisible) {
            return;
        }
        //填充各控件的数据
    }
}


附:Fragment的其他生命周期

onAttach()

  当fragment和activity被关联时调用。

onCreateView()

  当创建fragment的UI被初始化时调用。

onActivityCreated()

  当activity的onCreate()方法返回时调用。

onDestroyView()

  当fragment的UI被移除的时候调用。

onDetach()

  当fragment和activity去关联时调用。



http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1021/1813.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值