您的位置:首页 > 移动开发 > Android开发

Android中FragmentPagerAdapter与FragmentStatePagerAdapter使用和区别

2018-03-23 16:33 1171 查看
FragmentPagerAdapter 和 FragmentStatePagerAdapter区别:

在使用方式上两者没有区别,区别主要体现在缓存上

FragmentPagerAdapter :

1、getItem只调用一次,调用一次将返回位置的Fragment缓存到mFragmentManager,下次切换调用instantiateItem直接从mFragmentManager的缓存拿,在mCurTransaction.attach(fragment);触发Fragment周期方法

2、Fragment切换的时候,销毁缓存, 仅销毁Fragent的视图onDestroyView

3、Fragment切换的时候,重新加载显示Fragment,仅创建视图onCreateView

FragmentPagerAdapter会把Fragment进行缓存,切换的时候虽然ViewPager会有缓存的创建和销毁但仅仅是创建和销毁Fragment的视图不会对Fragment对象有影响

FragmentStatePagerAdapter:

不会对Fragment进行缓存,每次切换的时候ViewPager销毁缓存和创建的时候都是直接销毁Fragment–>onDestroy, 创建的时候直接重新创建Fragment—>onCreate

使用的时候:由于FragmentPagerAdapter会对Fragment对象进行缓存,如果项目有很多个Fragment这个时候,超过6个,会内存浪费, 就选着FragmentPagerAdapter

当Fragment嵌套使用的时候,内层的Fragment切换使用的mFragmentManager必须是getChildFragmentManager内层的Fragment的生命周期才会起作用

Fragment fragment = mFragmentManager.findFragmentByTag(name);

mCurTransaction.attach(fragment);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐