参考如下博客做一个总结:Android开发-ViewPager嵌套Fragment卡顿解决Viewpager滑动重复加载Fragment延迟加载_Mango先生的博客-优快云博客_android viewpager滑动卡顿
首先要明确的是两个基本概念:
getFragmentManager()
所得到的是所在fragment 的父容器的管理器。
getChildFragmentManager()
所得到的是在fragment 里面子容器的管理器。
getFragmentManager到的是activity对所包含fragment的Manager,而如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager()了。
如果使用的是FragmentPagerAdapter,那第一个Fragment会执行到onDestroyView,即Fragment的视图被销毁了,实例还存在,当再次滑动到第一个Fragment的时候,会再次从onCreateView回调重建View。如果使用的是FragmentStatePagerAdapter,那第一个Fragment会一直执行到onDetach,即视图销毁了,如果没有添加到回退栈,Fragment的实例也会被销毁,当再次滑动到第一个Fragment的时候,会再从onAttach开始回调。不管是第一种adapter还是第二种adapter,都对导致Fragmen

本文探讨了在Android开发中使用ViewPager嵌套Fragment时可能导致的卡顿问题及其原因。关键在于理解`getFragmentManager()`与`getChildFragmentManager()`的区别。使用FragmentPagerAdapter时,Fragment的视图会在滑动时重复创建,而FragmentStatePagerAdapter则可能导致Fragment实例被销毁。这种重复加载是性能瓶颈。优化策略是通过设置Fragment的tag,在滑动时检查并复用已存在的Fragment,减少资源消耗。作者提供了一个GitHub示例项目以展示优化方法。
最低0.47元/天 解锁文章
584

被折叠的 条评论
为什么被折叠?



