背景:
我们在使用viewpage的时候,经常需要动态添加fragment视图。如果是数量比较小,FragmentPagerAdapter和FragmentStatePagerAdapter都无所谓,但是涉及到几百条上千条记录,就需要考虑到如何选择一个正确的适配器了
FragmentPagerAdapter:对于不再需要的fragment,选择调用detach 方法,仅销毁视图,并不会销毁fragment 实例。
FragmentStatePagerAdapter:会销毁不再需要的fragment,当当前事务提交以后,会彻底的将fragmeng 从当前Activity 的FragmentManager 中移除,state 标明,销毁时,会将其onSaveInstanceState(Bundle outState)中的bundle 信息保存下来,当用户切换回来,可以通过该bundle 恢复生成新的fragment,也就是说,你可以在onSaveInstanceState(Bundle outState)方法中保存一些数据,在onCreate 中进行恢复创建。
总结:
如上所说,使用FragmentStatePagerAdapter 当然更省内存,但是销毁新建也是需要时间的。一般情况下,如果你是制作主页面,就3、4 个Tab,那么可以选择使用FragmentPagerAdapter,如果你是用于ViewPager 展示数量特别多的条目时,那么建议使用FragmentStatePagerAdapter