FragmentStatePagerAdapter 和 FragmentPagerAdaptre的不同

FragmentStatePagerAdapter 和 FragmentPagerAdaptre的不同

简单说:

使用FragmentStatePagerAdapter会销毁掉不需要的fragment。事务提交后,可将fragment从activity的FragmentManager中彻底移除。类名中的“state”表明:在销毁fragment时,它会将其onSaveInstanceState(Bundle) 方法中的Bundle信息保存下来。用户切换回原来的页面后,保存的实例状态可用于恢复生成新的fragment.

FragmentPagerAdapter的做法大不相同。对于不再需要的fragment,FragmentPagerAdapter则选择调用事务的detach(Fragment) 方法,而非remove(Fragment)方法来处理它。也就是说,FragmentPagerAdapter只是销毁了fragment的视图,但仍将fragment实例保留在FragmentManager中。因此, FragmentPagerAdapter创建的fragment永远不会被销毁。

应用:

ViewPager中显示的Item数量固定时使用FragmentPagerAdapter即可,如果数量非固定即使用FragmentStatePagerAdapter。

参考文章:https://segmentfault.com/a/1190000003742057

你可能感兴趣的:(FragmentStatePagerAdapter 和 FragmentPagerAdaptre的不同)