Fragment懒加载预加载

 

1. 预加载viewpager.setOffscreenPageLimit(2);,默认是预加载1,可以结合懒加载使用。

 

  如果希望进入viewpager,Fragment只加载一次,再次滑动不需加载(只有退出Activity),

 

可以重写viewpager adapter的getItem,去掉super

 

 

2.懒加载  

  public abstract class LazyFragment extends Fragment {  

             protected boolean isVisible;  

             /** 

              * 在这里实现Fragment数据的缓加载. 

              * @param isVisibleToUser 

             */  

    @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;  

         }  

    //填充各控件的数据  

      }  

}

 

 

 

 

 

 

 

posted @ 2017-04-27 08:58  我又不会乱来  阅读(1348)  评论(0编辑  收藏  举报