FragmentStatePagerAdapter和FragmentPagerAdapter

来源:互联网 发布:轩辕世界神兽进化数据 编辑:程序博客网 时间:2024/06/06 05:27

说明下,我是在做一个包含有18个页面的ViewPager时遇到新数据没有刷新,所以发现了原来用FragmentStatePagerAdapter的好处,一个是内存释放,另一个就是能够拿到最新数据并刷新ViewPager。

FragmentStatePagerAdapter顾名思义,我们的这个FragmentStatePagerAdapter,在我们切换不同的Fragment的时候,我们会把前面的Fragment销毁,而我们系统在销毁前,会把我们的我们Fragment的Bundle在我们的onSaveInstanceState(Bundle)保存下来。等用户切换回来的时候,我们的Fragment就会根据我们的instance state恢复出来。

FragmentPagerAdapter使用这种Adapter,我们的Fragment在切换的时候,不会销毁,而只是调用事务中的detach方法,这种方法,我们只会把我们的Fragment的view销毁,而保留了以前的Fragment对象。所以通过这种方式创建的Fragment一直不会被销毁。

我们的FragmentPagerAdapter适用于Fragment比较少的情况,因为我们会把每一个Fragment保存在内存中,不用每次切换的时候,去保存现场,切换回来在重新创建,所以用户体验比较好。而对于我们的Fragment比较多的情况,我们需要切换的时候销毁以前的Fragment以释放内存,就可以使用FragmentStatePagerAdapter。

文章概念引用coolma(简书作者)
链接:http://www.jianshu.com/p/3d68d6ec9468

0 0