还记得以前使用 ViewPager+Fragment 时根本不考虑效率问题,一股脑的多页数据加载导致卡死,还自我安慰说我设置了 setOffscreenPageLimit 了啊,而实际上跟踪源码我们发现 DEFAULT_OFFSCREEN_PAGES = 1,所以即便 setOffscreenPageLimit 我设置为 0,ViewPager 最少也会加载后一页。为了保证效率现在都提倡一种懒加载的机制,即只有当前页面为显示页面才会加载且只加载一次数据(做一次耗时操作:或网络请求或本地数据)。有同学说我可以拷贝源码把默认改为 0 啊,是可以这么多,但是改变了 viewpager 的初衷,不够灵活。在实际项目中我还是建议改造 BaseFragment,利用 setUserVisibleHint,暴露懒加载的方法,根据需要重载懒加载方法做实际操作。