package com.uiui.zyos.base; import android.os.Bundle; import androidx.fragment.app.Fragment; /** * Author: wangjie * Email: tiantian.china.2@gmail.com * Date: 1/23/15. */ public abstract class BaseLazyFragment extends Fragment { private static final String TAG = BaseLazyFragment.class.getSimpleName(); private boolean isPrepared; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initPrepare(); } /** * 第一次onResume中的调用onUserVisible避免操作与onFirstUserVisible操作重复 */ private boolean isFirstResume = true; @Override public void onResume() { super.onResume(); if (isFirstResume) { isFirstResume = false; return; } if (getUserVisibleHint()) { onUserVisible(); } } @Override public void onPause() { super.onPause(); if (getUserVisibleHint()) { onUserInvisible(); } } private boolean isFirstVisible = true; private boolean isFirstInvisible = true; @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { if (isFirstVisible) { isFirstVisible = false; initPrepare(); } else { onUserVisible(); } } else { if (isFirstInvisible) { isFirstInvisible = false; onFirstUserInvisible(); } else { onUserInvisible(); } } } public synchronized void initPrepare() { if (isPrepared) { onFirstUserVisible(); } else { isPrepared = true; } } /** * 第一次fragment可见(进行初始化工作) */ public abstract void onFirstUserVisible(); /** * fragment可见(切换回来或者onResume) */ public abstract void onUserVisible(); /** * 第一次fragment不可见(不建议在此处理事件) */ public abstract void onFirstUserInvisible(); /** * fragment不可见(切换掉或者onPause) */ public abstract void onUserInvisible(); }