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();
}