资讯详情

第127篇ViewPager2 与 Fragment:懒加载的正确实现

📅 2026/10/10 2:42:26 | 华诺云谱 👁 阅读
第127篇ViewPager2 与 Fragment:懒加载的正确实现
先把结论放在前面:ViewPager2 内部就是一个 RecyclerView,页面项由FragmentStateAdapter托管,Fragment 的生命周期由它按可见性自动触发。所以"RecyclerView 复用"的那套坑——itemViewType、getItemId、notifyDataSetChanged的抖动——在 ViewPager2 上同样存在,而且因为它同时管理着 Fragment 实例,坑的破坏力更大。ViewPager2 相比旧版 ViewPager 的改进不只是 API 变化,这题的坑都在边界上,逐个踩一遍才算真懂。先讲清它为什么换成了 RecyclerView旧版 ViewPager 的问题写在源码里:内部直接持有View列表和SparseArrayFragment,没有复用机制,页面多了会吃掉大量内存;还有一个 notorious 的 bug——必须setUserVisibleHint才能让内部 Fragment 感知可见性,于是开发者到处手动调setUserVisibleHint,与 FragmentManager 的可见性回调打架,表现为"加载两次"或"切回来还是旧数据"。ViewPager2 的做法是彻底换掉内核:内部用Recycle
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑