Android: ViewPager+Fragment嵌套的优化

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考如下博客做一个总结:Android开发-ViewPager嵌套Fragment卡顿解决Viewpager滑动重复加载Fragment延迟加载_Mango先生的博客-CSDN博客_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值