Use lazyload

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

Loading…
Cancel
Save