viewpager有缓存预加载机制,主要使用setOffscreenPageLimit(int limit)
1.setOffscreenPageLimit(int limit) 解释
缓存:左右都会缓存limit个页面,比如limit缓存数量是2,在tab3,那会缓存tab1、tab2、tab4、tab5,如果其他界面已经缓存过的话会调用onDestroyView销毁
预加载:limit缓存数量是2,如果在tab1会预加载tab2、tab3,切换到tab2的话会预加载tab4,
2.viewpager源码分析
viewpager继承viewgroup当然也要走onmeasure,ondraw,onlayout方法,主要看onmeasure里面的populate()方法
这里的mAdapter是PagerAdapter
fragmentpageradapter就是你写的适配器,接下来看具体实现
所以我们可以用uservisiblehint来懒加载,需要注意的是uservisiblehint不是生命周期函数,初始化的时候他的执行在fragment的onattch之前
Fragment 生命周期按先后顺序:onAttach -> onCreate -> onCreatedView -> onActivityCreated -> onStart -> onResume ->onPause -> onStop -> onDestroyView -> onDestroy -> onDetach
网友评论