FragmentStatePagerAdapter和Fragme
2018-05-02 本文已影响57人
From64KB
FragmentStatePagerAdapter和FragmentPagerAdapter用法基本一致,唯一的区别在于卸载不再需要的Fragment时,各自采用的处理方法不同。
FragmentStatePagerAdapter会销毁不再需要的Fragment。事务提交后,activity的FragmentManager中的fragment会被彻底移除。FragmentStatePagerAdapter类中的“state”表明:在销毁Fragment时,可在onSaveInstanceState(Bundle)方法中保存Fragment的Bundle信息。用户切换回来时,保存的实力状态可用来生成新的Fragment。
相比之下,FragmentPagerAdapter对于不再需要的Fragment,会调用事务的detach(Fragment)
方法来处理,而不是remove(Fragment)
方法。换句话说就是FragmentPagerAdapter只是销毁了Fragment的视图,当这个Fragment实例还保留在FragmentManager中。因此,FragmentPagerAdapter创建的Fragment永远不会被销毁。
说道具体的用途,使用FragmentStatePagerAdapter更加节省内存,所以适合显示大量的数据。而FragmentPagerAdapter则更加适合显示少量固定的Fragment,比如一般App常用的Tab页。通常只有固定数量的tab页3~5页,所以也不用担心内存不足的问题。