DownOL 软件仓库– 软件下载,字节世界与新知

App中fragment懒载入实现

发表于:2024-05-13 作者:创始人
编辑最后更新 2024年05月13日,大家都知道客户端采用了懒载入的模式,我这边也做了一下 以作参考代码比较简单如下1,BaseFragment中添加// 标识view 是否初始化完成protected boolean isViewIni

大家都知道客户端采用了懒载入的模式,我这边也做了一下 以作参考

代码比较简单如下

1,BaseFragment中添加

// 标识view 是否初始化完成protected boolean isViewInit = false;

2,实现自己定义的LazyFragment

package finan.heng.com.apps.base;import android.os.Bundle;import android.support.annotation.Nullable;/*** author:sparkhuu* */public abstract class LazyFragment extends BaseFragment {// 当前Fragment 是否可见protected boolean isVisible = false;// 是否载入过数据protected boolean isLoadData = false;@Overridepublic void setUserVisibleHint(boolean isVisibleToUser) {super.setUserVisibleHint(isVisibleToUser); this.isVisible = isVisibleToUser;preLoadData(false);}@Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState); this.isViewInit = true;// 防止一开始载入的时候未调用 preLoadData 方法, 因为setUserVisibleHint 比 onActivityCreated 触发前if (getUserVisibleHint()) {preLoadData(false);}}/** * 子类载入数据 */protected abstract void loadData();/** * 当UI初始化成功,UI可见并且没有载入过数据的时候 载入数据 * * @param forceLoad 强制载入数据 */public void preLoadData(boolean forceLoad) {if (isViewInit && isVisible && (!isLoadData || forceLoad)) {loadData();isLoadData = true;}}}

需要用到的地方 只需要fragment继承该类即可。简单快捷。

2022-05-09 22:01:16
0