diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java index a506737ed..d98dde5f8 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java +++ b/app/src/leanback/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() { initView(); initEvent(); } @@ -31,4 +42,20 @@ public abstract class BaseFragment extends Fragment { protected void initEvent() { } + + @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; + } }