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);
在使用方式上两者没有区别,区别主要体现在缓存上
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);
相关文章推荐
- 【Android】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- 【Android界面实现】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- 【Android界面实现】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- [转][Android]FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- Android——FragmentPagerAdapter和FragmentStatePagerAdapter的使用...
- android FragmentpagerAdapter和FragmentStatePagerAdapter的区别
- FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- Android FragmentPagerAdapter和FragmentStatePagerAdapter的区别
- FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- ViewPager 的适配器 PagerAdapter 、FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- android FragmentpagerAdapter和FragmentStatePagerAdapter的区别
- FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- android FragmentpagerAdapter和FragmentStatePagerAdapter的区别
- FragmentPagerAdapter与FragmentStatePagerAdapter使用区别
- Android——ViewPager、PagerAdapter、Fragment(State)PagerAdapter的关系与区别
- android之FragmentPagerAdapter 和FragmentStatePagerAdapter的区别
- FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别