在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.pngFragmentPageAdapter
FragmentPageAdapter会调用事务的detach方法来处理,而不是使用remove方法。因此,FragmentPageAdapter只是销毁了Fragment的视图,其实例还是保存在FragmentManager中。
FragmentPageAdapter.png