FragmentStatePageAdapter与FragmentPageAdapter的区别

在ViewPager中使用Fragment的情况下,可以给ViewPager设置两种Adapter,一种是FragmentStatePagerAdapter,一种是FragmentPagerAdapter。

那这两种Adapter有什么区别呢?

FragmentStatePageAdapter

FragmentStatePagerAdapter会销毁不需要的Fragment,一般来说,ViewHolder会保存正在显示的Fragment和它左右两边第一个Fragment,分别为A、B、C,那么当显示的Fragment变成C时,保存的Fragment就会变成B、C、D了,而A此时就会被销毁,但是需要注意的是,此时A在销毁的时候,会通过onSaveInstanceState方法来保存Fragment中的Bundle信息,当再次切换回来的时候,就可以利用保存的信息来恢复到原来的状态。

图示如下


FragmentStatePageAdapter.png

FragmentPageAdapter

FragmentPageAdapter会调用事务的detach方法来处理,而不是使用remove方法。因此,FragmentPageAdapter只是销毁了Fragment的视图,其实例还是保存在FragmentManager中。


FragmentPageAdapter.png

你可能感兴趣的:(FragmentStatePageAdapter与FragmentPageAdapter的区别)