package com.doumee.lib_coremodel.base; import android.os.Bundle; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.databinding.ViewDataBinding; import androidx.fragment.app.Fragment; /** * 懒加载Fragment * @author Jenly */ public abstract class BaseLazyFragment extends BaseFragment { /** * 是否可见 */ private boolean isVisible; /** * 是否初次加载 */ private boolean isFirstLoad; /** * 是否准备好加载 */ private boolean isPrepared; @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { isFirstLoad = true; super.onViewCreated(view, savedInstanceState); isPrepared = true; } @Override public void onResume() { super.onResume(); lazyLoad(); } /** * {@link Fragment}可见 */ private void onVisible(){ isVisible = true; lazyLoad(); } /** * {@link Fragment}不可见 */ private void onInvisible(){ isVisible = false; } @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if(hidden){ onInvisible(); }else{ onVisible(); } } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if(isVisibleToUser){ onVisible(); }else{ onInvisible(); } } /** * 懒加载,触发{@link #onLazyLoad()} */ private void lazyLoad(){ if(isFirstLoad && isPrepared && isVisible){ //保证只加载一次 isFirstLoad = false; onLazyLoad(); } } /** * 懒加载 */ public abstract void onLazyLoad(); }