版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79217223

基类:

package fragment;import android.support.v4.app.Fragment;
import android.view.View;/*** Created by xiaobai on 2018/1/31/031.*/public abstract class BaseFragment extends Fragment {/*** Fragment当前状态是否可见*/public boolean isVisible;/*** inflate布局文件 返回的view*/public View mView;/*** 简化 findViewById** @param viewId* @param <T>* @return*/protected <T extends View> T find(int viewId) {return (T) mView.findViewById(viewId);}/*** setUserVisibleHint是在onCreateView之前调用的* 设置Fragment可见状态*/@Overridepublic void setUserVisibleHint(boolean isVisibleToUser) {super.setUserVisibleHint(isVisibleToUser);/*** 判断是否可见*/if (getUserVisibleHint()) {isVisible = true;onVisible();} else {isVisible = false;onInvisible();}}/*** 可见*/private void onVisible() {lazyLoad();}/*** 不可见*/private void onInvisible() {}/*** 延迟加载* 子类必须重写此方法*/public abstract void lazyLoad();
}

应用:

package fragment;import android.content.pm.ApplicationInfo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;import com.android.xiaobai.R;import java.util.List;/*** Created by xiaobai on 2018/1/31/031.*/public class AppFragment extends BaseFragment {/*** 标志位,标志已经初始化完成*/private boolean isPrepared;/*** 是否已被加载过一次,第二次就不再去请求数据了*/private boolean mHasLoadedOnce;private List<ApplicationInfo> mAppList;private ListView lv;@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {if (mView == null) {// 需要inflate一个布局文件 填充FragmentmView = inflater.inflate(R.layout.fragment_app, container, false);initView();isPrepared = true;
//        实现懒加载lazyLoad();}//缓存的mView需要判断是否已经被加过parent, 如果有parent需要从parent删除,要不然会发生这个mView已经有parent的错误。ViewGroup parent = (ViewGroup) mView.getParent();if (parent != null) {parent.removeView(mView);}return mView;}/*** 初始化控件*/private void initView() {lv = find(R.id.lv);}@Overridepublic void lazyLoad() {if (!isPrepared || !isVisible || mHasLoadedOnce) {return;}//填充各控件的数据mHasLoadedOnce = true;}
}

Android--Fragment 实现懒加载和不重复加载相关推荐

  1. Android优化方案之--Fragment的懒加载实现

    一.背景 在Android应用中,ViewPager是我们不可避免使用的一个控件,因为它可以使我们在占用较少空间的同时,增强内容的丰富性,同时以其内部流淌着Google的血液,所以它几乎成了每一个Ap ...

  2. fragment的懒加载

    1 为什么需要懒加载 用fragment+viewpager+fragmentPagerAdapter作为框架 ,会出现fragment预加载. 2.用setUserVisibleHint()方法可以 ...

  3. Fragment的懒加载与生命周期详解

    提示:本文仅为笔者学习记录 Fragment的懒加载与生命周期详解 什么是懒加载 了解Fragment的生命周期 onAttach onCreate onCreateView onActivityCr ...

  4. Fragment.setUserVisibleHint()懒加载过时问题优化

    文章目录 ViewPager+FragmentPagerAdapter 被标记为过时 源码浅析 结论 举个栗子 不传BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT时 传入B ...

  5. 安卓:Fragment的懒加载

    Android应用开发过程中,ViewPager同时加载多个fragment,以实现多tab页面快速切换, 但是fragment初始化时若加载的内容较多,就可能导致整个应用启动速度缓慢,影响用户体验. ...

  6. Fragment实现懒加载解决方案

    场景分析 当一个 MainActivity 对应显示3个 Fragment 时,假设默认显示第一个Fragment,那么第二和第三个Fragment的数据就可以延迟加载.如果加载数据比较耗时或者都是类 ...

  7. 【Android】Fragment懒加载和ViewPager的坑

    本篇文章已授权微信公众号 安卓巴士Android开发者门户 独家发布 效果 老规矩,先来看看效果 ANDROID和福利两个Fragment是设置的Fragment可见时加载数据,也就是懒加载.圆形的旋 ...

  8. Androidx ViewPager+Fragment 懒加载

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/113545036 本文出自[赵彦军的博客] 目录 前言 懒加载(预加载) 传统模式 ...

  9. Android 懒加载

    最近在重构公司公司的主页,其中用到了懒加载,所以找了网上的懒加载的介绍的博客,读了好几篇关于懒加载的文件,发现不是讲解太简单,就是代码不够清晰,而且在懒加载的实现原理上没有透彻的讲清楚,在实际应用实践 ...

最新文章

  1. python如何保存列表_Python 基础知识全篇-列表(Lists)
  2. Ant Design Pro 组件事件绑定 Input onChange
  3. 征服围棋之后 谷歌DeepMind宣布利用AI对抗乳腺癌
  4. C语言求35 45的最大公约数,c语言编程题目及答案
  5. 怎么在HTML中加个日历,HTML中如何添加日历插件(JQUERY)
  6. java ftp 中文上传_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...
  7. 分支语句---- if …… else if …… else
  8. Python新手输出代码
  9. log添加 oracle redo_添加Redo log Member/Group-Oracle
  10. Ubuntu Server 16.04 安装 Redis 3.2.0
  11. python结果按行输出_Python实现读取字符串按列分配后按行输出示例
  12. post接口请求测试,通俗易懂
  13. TCP协议中的源地址和目的地址是内网地址还是外网地址的测试
  14. [他山之玉]轮值董事长郭平 2019年新年致辞
  15. 连续时间正弦信号和离散时间正弦信号
  16. 爬虫-招聘系列2----boss某直聘
  17. 机器学习中的L1和L2正则化项
  18. #小何不断努力#8.18
  19. 【基础】python操作Word时,自动更新目录(二)
  20. 广义表的长度,深度及复制广义表的算法

热门文章

  1. html br/引起的”血案“
  2. 在PHP中实现StringBuilder类
  3. archlinux cn源
  4. java中char是几个字节_Java中char占用几个字节
  5. 湖南科技学院计算机科学与技术分数,湖南科技学院计算机科学与技术专业2016年在河南理科高考录取最低分数线...
  6. 可以卸载什么程序来对计算机进行瘦身,电脑越来越卡了,教你一分钟让电脑瘦身(C盘哪些文件可以删除)-怎么清理电脑内存...
  7. 倒序查10条数据_王者荣耀对抗路数据公布,尖端局吕布倒第一,夏洛特真的很意外...
  8. 251f与ips屏显示器对比_同样是240Hz高刷新率 有了VA屏你还会选择TN?
  9. 常用构建数据科学应用程序的七个Python库
  10. stm32和51单片机的区别,先学51还是先学stm32?