当页面可见的时候,加载当前页面。 没有打开的页面,就不会预加载。
通过Fragment中的setUserVisibleHint()方法进行判断,此方法会在onCreateView()之前执行,当viewPager中fragment改变可见状态时就会调用。
注意点:当view创建后进行调用,防止数据加载方法报空指针异常;
调用方法之后记录加载状态,防止ViewPager来回切换时方法不会被重复调用。
方法:
使用 isViewCreate 和 isLazyLoaded记录状态,在系统调用onActivityCreated时设置为true,这时onCreateView方法已调用完毕;在第一次调用onLazyLoad()方法后马上执行 isLazyLoaded = true。
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
isViewCreate = true;
lazyLoad();
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
lazyLoad();
}
private void lazyLoad() {
if (isViewCreate && getUserVisibleHint() && !isLazyLoaded) {
isLazyLoaded = true;
initData();
}
}