PagerView的三种适配器PagerAdapter、FragmentPagerAdapter与FragmentStatePagerAdapter

3104089-b9d25e7bc765e06a.png
3104089-1922742034e2e8ac.png

FragmentStatePagerAdapter总是缓存当前页面与左右两边的页面。会删除距离当前界面较远的Fragment实例。
FragmentPagerAdapter会缓存所有已经创建的fragment实例。
destroyItem()方法中FragmentPagerAdapter调用事务的detach()方法,而FragmentStatePagerAdapter调用remove()方法移除Fragment。

Fragment生命周期


3104089-957de696ccdcdbab.png

detach()方法执行到onDestroyView(),调用attach()方法后从onCreateView()执行到onResume()。
remove()方法执行到onDetach()。销毁实例。
ViewPager会始终缓存三个View。

三种Adapter的缓存策略
而三种Adapter的缓存策略则各有不同:
PagerAdapter:缓存三个,通过重写instantiateItem和destroyItem达到创建和销毁view的目的。
FragmentPagerAdapter:内部通过FragmentManager来持久化每一个Fragment,在destroyItem方法调用时只是detach对应的Fragment,并没有真正移除!
FragmentStatePagerAdapter:内部通过FragmentManager来管理每一个Fragment,在destroyItem方法 调用时移除对应的Fragment。

当展示的子Fragment多时候选择FragmentStatePagerAdapter。少的时候可以使用FragmentPagerAdapter

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容