FragmentStatePagerAdapter 与 FragmentPagerAdapter区别

FragmentPagerAdapter是另外一种可用的PagerAdapter,其用法与FragmentStatePagerAdapter基本一致。唯一的区别在于,卸载不再需要的fragment时, 各自采用的处理方法有所不同。
FragmentStatePagerAdapter会销毁不需要的fragment。事务提交后, activity的FragmentManager中的fragment会被彻底移除。 FragmentStatePagerAdapter类名中的“state”表明:在销毁fragment时,可在onSaveInstanceState(Bundle)方法中保存fragment的Bundle信息。用户切换回来时,保存的实例状态可用来生成新的fragment。相比之下, FragmentPagerAdapter有不同的做法。对于不再需要的fragment, FragmentPagerAdapter会选择调用事务的detach(Fragment)方法来处理它,而非remove(Fragment)方法。也就是说, FragmentPagerAdapter只是销毁了fragment的视图,而fragment实例还保留在FragmentManager中。因此, FragmentPagerAdapter创建的fragment永远不会被销毁。

FragmentStatePagerAdapter
FragmentPagerAdapter

选择哪种adapter取决于应用的要求。通常来说,使用FragmentStatePagerAdapter更节省内存。 如果应用需显示大量Fragment,在内存中保存所有信息显然不合适,因此我们选择使FragmentStatePagerAdapter。

另一方面,如果用户界面只需要少量固定的fragment,则FragmentPagerAdapter是安全、合适的选择。

猜你喜欢

转载自blog.csdn.net/xiao6gui/article/details/80760720