背景介绍
我经常看到ViewPager采用不同的适配器来进行赋值,PagerAdapter、FragmentPagerAdapter、FragmentStatePagerAdapter,心里面一直有一个疑惑,他们究竟有什么区别呢?ViewPager在什么样的业务场景下回选择对应的Adapter。
如果你也有同样的困惑,下面将跟着我的脚步,一起学习吧,相信通过下面的学习,你心中的困惑我会为你解开。
官网参考文章
如果英语比较好的,建议看官网,讲解的更好。
developer.android.google.cn/reference/k…
developer.android.google.cn/reference/k…
developer.android.google.cn/reference/k…
PagerAdapter的应用场景
应用场景
ViewPager的每一页就是就是一个View,比如轮播图等。
优点
对于简单View使用PagerAdapter,非常的高效。
缺点 对于复杂的View,并且有交互的View,不太适合这种场景。
FragmentPagerAdapter的应用场景和优缺点
应用场景
页面较少(比如有5、6个左右),并且每一个页面是一个Fragment,比如网易云音乐的首页。
优点
切换的时候,非常的平滑流畅。
缺点
1、尽管当页不可见得时候, view hierarchy可能销毁,但是每一页对应的fragment会保存在内存中。
2、会消耗一定内存。
FragmentStatePagerAdapter的应用场景
应用场景
当有大量页面的时候,这个时候可以使用FragmentStatePagerAdapter,更加高效,像ListView一样。
优点
1、当页面不可见的时候,fragment会被销毁。
2、当拥有很多页面的时候,在内存中没有占用很大的内存。
3、FragmentStatePagerAdapter会对limit以外的page回收,FragmentStatePagerAdapter在销毁Fragment的时候,会保存数据,然后在下一次创建Fragment的时候,会将数据重新进行渲染。
缺点:
由于要重新加载页面,所以要重新渲染数据。