Use lazy load

pull/605/head
jhengazuki 4 months ago
parent 401ece6fd1
commit 424110b2d2
  1. 27
      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;
}
}

Loading…
Cancel
Save