diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseFragment.java index 81590797f..527070f64 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseFragment.java @@ -12,6 +12,9 @@ import androidx.viewbinding.ViewBinding; public abstract class BaseFragment extends Fragment { + private boolean isViewCreated; + private boolean isDataLoaded; + protected abstract ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container); @Nullable @@ -22,6 +25,14 @@ public abstract class BaseFragment extends Fragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + isViewCreated = true; + if (getUserVisibleHint()) { + lazyLoad(); + isDataLoaded = true; + } + } + + private void lazyLoad() { initMenu(); initView(); initEvent(); @@ -39,4 +50,20 @@ public abstract class BaseFragment extends Fragment { public boolean canBack() { return true; } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + if (isVisibleToUser && isViewCreated && !isDataLoaded) { + lazyLoad(); + isDataLoaded = true; + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + isViewCreated = false; + isDataLoaded = false; + } }