一、ViewPager+Fragment 的懒加载
- ViewPager 默认会提前加载当前 fragment 左右两个 fragment,从而导致提前进网络请求,增加流量数据。后面通过 fragment 的懒加载机制,只有当 fragment 可见且从来没有请求数据成功后,才会去进行网络请求。这样,就避免了不必要的网络请求,节省了数据流量。
- 懒加载实现:重写 setUserVisibleHint (boolean isVisibleToUser) 方法,isVisibleToUser 参数判断 fragment 是否可见,我自己新增了一个字段 mHaveLoadDataSuccess, 判断 fragment 是否已经请求过数据且请求成功。
二、Fragment A 到 Fragment B 的生命周期变化
-
ViewPage + 4个 Fragment
-
Frament A 到 Frament B
Fragment C: onAttach onCreate onCreatedView onActivityCreated onStart onResume
-
Frament B 到 Frament C
Fragment A onPause onStop onDestroyView
Fragment D: onAttach onCreate onCreatedView onStart onResume
-
Fragment C 到 Fragment D
Fragment B: onPause onStop onDestroyView
-
Fragment D 到 Fragment C
Fragment B: onCreatedView onStart onResume
-
Fragment C 到 Fragment B
Fragment A: onCreatedView
Fragment B: onPause onStop onDestroyView
Fragment A: onStart onResume
-
Fragment B 到 Fragment A
Fragment C: onPause onStop onDestroyView
三、参考资料
-
解释上篇文章中,为什么有人说isViewCreated标记是冗余的,可直接通过Fragment#getView()获得:
Fragment的getView()为空问题