public abstract class LazyFragment extends Fragment {
protected boolean isVisible;
protected boolean isPrepared;
private int isFirst = 0;
/**
* 在这里实现Fragment数据的缓加载.
*
* @param isVisibleToUser
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getUserVisibleHint()) {//当可见的时候执行操作
isVisible = true;
onVisible();
} else {//不可见时执行相应的操作
isVisible = false;
onInvisible();
}
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
isPrepared = true;
onVisible();
}
protected void onVisible() {
if (isPrepared && isVisible) {
lazyLoad();
}
}
@Override
public void onResume() {
super.onResume();
if (isFirst++ != 0) {
onVisible();
}
}
protected abstract void lazyLoad();//子类实现
protected void onInvisible() {
}
}