玖叶教程网

前端编程开发入门

App中fragment懒加载实现(import 懒加载)

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

代码比较简单如下

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;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
 this.isVisible = isVisibleToUser;
preLoadData(false);
}
@Override
public 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继承该类即可。简单快捷。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言