(Fragment六)ViewPager2 与 Fragment 结合时,FragmentStateAdapter 和 FragmentAdapter 的区别?它们的生命周期有何不同?

ViewPager2是Android Jetpack中对旧ViewPager的现代化替代,它与Fragment结合使用时,其核心适配器FragmentStateAdapterFragmentAdapter内存管理策略生命周期控制上有着根本性的区别。这些区别直接影响到应用的性能和内存占用。”


核心区别:内存管理哲学

首先,我们通过一个表格来快速把握两者的核心差异:

特性 FragmentStateAdapter FragmentAdapter
设计目标 处理大量页面,优化内存使用 处理少量静态页面,保持所有页面活跃
页面管理 销毁不可见页面,只保存其状态 保留所有页面实例在内存中
状态保存 自动调用onSaveInstanceState()保存状态,并在页面重新创建时恢复 依赖Fragment自身在内存中的存活,无特殊状态恢复机制
适用场景 图片浏览器、新闻Feed流、多步骤表单等页面数量多或不确定的场景 固定的Tab页面(如3-5个),且每个页面都需要保持其UI状态(如滚动位置、输入内容)
内存开销 (仅保留少量页面实例) (所有页面实例常驻内存)

工作原理与生命周期深度剖析

为了更直观地理解这两种适配器对Fragment生命周期的管理差异,下图展示了它们在页面切换时的不同行为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值