一直以来使用ViewPager时都感觉生命周期紊乱,今天闲下来,搞清楚到底咋回事
1、Fragment搭配ViewPager
这个是当前使用频率最高的组合。以下均使用ViewPager默认缓存页数1页。
搭配一:FragmentPagerAdapter
每一个创建的Fragment会缓存在内存中, 常用于引导页,tab页等固定页面数量较少的
搭配二:FragmentStatePagerAdapter使用。
缓存外的页面会被销毁,常用于动态添加页面,页面数量较多的
此种情况,不缓存的直接销毁,需要恢复的重新创建。
总结:
1、需要特别注意的是:第0页初次创建,是先调用setUserVisibleHint方法,后调用onCreateView,但是此页在onCreateView里getUserVisibleHint()为true;后续页面正常,先调用onCreateView,后调用setUserVisibleHint。此处不清楚,fragment懒加载时很容易出错。
2、在两头(第0页和最后一页),当前有效页数都是两个,中间的有效页数为3个,左右各一个。
3、使用FragmentPagerAdapter,应该用变量存下View,恢复时候可以判断非空就复用,避免重复inflate或者创建造成资源浪费。
2、Fragment独立使用
此时生命周期跟Activity一样,没什么特别的,很单纯的正常创建。值得一提的是这种情况下setUserVisibleHint方法是不会被调用的,此方法只有在PagerAdapter这样一组Fragment中才会被调用。