android——Fragment实现懒加载

来源:互联网 发布:python import路径 编辑:程序博客网 时间:2024/06/05 11:33

效果:

  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

0 0
原创粉丝点击