琐碎知识点2
1. Fragment懒加载¶
ViewPager + 多Fragment 懒加载实现方式:
-
ViewPager + 默认 behavior(BEHAVIOR_SET_USER_VISIBLE_HINT)的 FragmentStatePagerAdapter + Fragment
在 Fragment 的onViewCreated
方法 和setUserVisibleHint
中进行懒加载判断。
private boolean mDataLoaded; @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // 跳tab选中时触发加载 lazyLoad(); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisible()) { // 平滑滑动tab时触发加载 lazyLoad(); } } private void lazyLoad() { if (!mDataLoaded && getUserVisibleHint() && isVisible()) { mDataLoaded = true; doLoadData(); } } protected void doLoadData() { }
-
ViewPager + BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT 的 FragmentStatePagerAdapter + Fragment
此处 Fragment 只需要在onResume
里面进行判断: -
使用 ViewPager2 + Fragment
ViewPager2 搭配第二种方式里面的 Fragment 也可以达到懒加载的效果。但是需要注意如何才能防止Fragment被自动销毁。