fragment懒加载

核心思想:

只要确保用户第一次见到该Fragment时,开始加载数据即可。
只要加载过数据,不管是加载成功失败,还是正在加载中都不会再次加载。

核心方法:

setUserVisibleHint(boolean isVisibleToUser)

加载数据的条件有三个:

1.Fragment可见(isVisibleToUser)
2.View初始化完毕(viewCreatedFinished)
3.第一次看到(hasLoadData)

/**
 * 数据懒加载
 */
public abstract class BaseLazyLoadFragment extends Fragment {
    private boolean hasLoadData;            //是否加载过(不论成功、失败或是正在加载)
    private boolean viewCreatedFinished;    //界面加载完成
    private boolean isVisibleToUser;        //是否可见

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        this.isVisibleToUser = isVisibleToUser;
        checkStatusToLoad();
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        viewCreatedFinished = true;
        checkStatusToLoad();
    }

    public void checkStatusToLoad() {
        if (isVisibleToUser && viewCreatedFinished && !hasLoadData) {
            hasLoadData = true;
            doLazyLoad();
        }
    }

    public abstract void doLazyLoad();

}

你可能感兴趣的:(fragment懒加载)