2018-09-28 Android- viewPager +fragment 实现懒加载 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667public abstract class LazyLoadFragment extends BaseLazyFragment { protected boolean isViewInitiated; protected boolean isVisibleToUser; protected boolean isDataInitiated; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle = getArguments(); if (bundle != null && bundle.size() > 0) { initVariables(bundle); } } protected abstract void initVariables(Bundle bundle); @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); isViewInitiated = true; prepareFetchData(); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); this.isVisibleToUser = isVisibleToUser; prepareFetchData(); if (getUserVisibleHint()) { onVisible(); } else { onInvisible(); } } protected abstract void onVisible(); protected abstract void onInvisible(); protected abstract void onFirstVisible(); @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); this.isVisibleToUser = !hidden; prepareFetchData(); if (!hidden) { onVisible(); } else { onInvisible(); } } public abstract void fetchData(); public boolean prepareFetchData() { return prepareFetchData(false); } public boolean prepareFetchData(boolean forceUpdate) { if (isVisibleToUser && isViewInitiated && (!isDataInitiated || forceUpdate)) { fetchData(); isDataInitiated = true; onFirstVisible(); return true; } return false; }} Newer Android-Arouter(调整人民日报结构) Older Android源码解析-EventBus