viewPager适配器PagerAdapter的两个直接子类FragmentPagerAdapter和FragmentStatePagerAdapter的区别

查看源码可知PagerAdapter是一个抽象类,它有两个直接子类FragmentPagerAdapter和FragmentStatePagerAdapter,那么下面就来说下两者的区别。

public abstract class PagerAdapter
public abstract class FragmentStatePagerAdapter extends PagerAdapter
public abstract class FragmentPagerAdapter extends PagerAdapter

FragmentPagerAdapter 一次会把所有的Fragment都加载,适用于数据量少,页面少,常用的fragment,像tab标签页这样的,可以用FragmentPagerAdapter。划过的fragment,尽管视图不见了,但是会把他们保存在内存里,方便调用,因此这会占用大量的内存空间。数据过多会发生状态丢失。

FragmentStatePagerAdapter 如果有大量的fragment,或者fragment中有大量的数据(Bitmap)就用fragmentStatePagerAdater,它就像listview一样,当fragment不可见时候,仅仅保存fragment的状态,相对上面的而言,这会占用较少的内存,不会发生状态丢失。

猜你喜欢

转载自blog.csdn.net/qq_34581102/article/details/52873003