Fragment懒加载
来源:互联网 发布:淘宝店铺网址怎么写 编辑:程序博客网 时间:2024/05/16 08:11
看了很多网上大神写的Fragment懒加载的代码,在此整理下。
先说下应用场景吧,当Fragment和Viewpager结合使用时 Viewpager同时加载多个Fragment实现多Tab的切换时,大量加载数据页面就会变得很卡顿。或者用户没用想着去浏览下一页的时候我们已经预加载好了内容。这样就造成了资源的浪费。非常影响用户体验。
解决方案:通过Fragment实现可见后加载(懒加载)。这时我们就会 用到setUserVisibleHint 和getUserVisibleHint方法。
想看setUserVisibleHint 方法详情 传送门:http://blog.csdn.net/czhpxl007/article/details/51277319
首先初始化两个标志,是否可见标志和onActivityCreated是否执行标志
//是否可见标志protected boolean isVisible;//初始化完成标志protected boolean isPrepare;提供一个是否执行懒加载的 方法isLazyLoad
private void isLazyLoad(){ //当可见时,并且初始化完成时,加载数据 if(isPrepare && isVisible){ //默认只加载一次 isPrepare = false; lazyLoad(); }}
/** * 如需懒加载,子类重写该方法 */protected void lazyLoad(){}
@Overridepublic void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); isPrepare = true; isLazyLoad();}
在onActivityCreated里改变为true,执行一次isLazyLoad。 (必须调用一次因为setUserVisibleHint )执行的比onActivityCreated初始化还要早,不调用会导致第一次进入数据空白
下面看setUserVisibleHint方法的操作
/** * 在这里实现Fragment数据的缓加载. * @param isVisibleToUser */@Overridepublic void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); //获取是否可见的状态 if(getUserVisibleHint()) { //可见时把 isVisible置为true isVisible = true; //执行相应可见的方法 onVisible(); } else { //可见时把 isVisible置为false isVisible = false; //执行相应不可见的方法 onInvisible(); }}
/** * 不可见 */protected void onInvisible(){}
可见时执行isLazyLoad();
/** * 可见 */protected void onVisible(){ isLazyLoad();}
这样懒加载就完了!可是默认只执行一次!那如果我们有执行多次的需要改怎么办呢?
那么我们再写一个刷新 isPrepare的方法!当执行完isLazyLoad的时候调用他。
/** * 设置再次进入是否需要刷新 * @param isRefresh 刷新标志 */protected void setRefresh(boolean isRefresh){ isPrepare = isRefresh;}
掉用的话就在lazyLoad中调用
@Overrideprotected void lazyLoad() { Toast.makeText(getContext(),"==懒加载1==",Toast.LENGTH_SHORT).show(); //如需每次进入都刷新,则调用此方法 setRefresh(true);}
0 0
- ViewPager加载Fragment懒加载
- Fragment中的懒加载
- Fragment懒加载
- fragment懒加载
- Fragment的懒加载
- Fragment的懒加载
- Fragment实现懒加载
- Fragment实现懒加载
- Fragment的懒加载
- Fragment懒加载
- ViewPager+Fragment懒加载
- Viewpager Fragment懒加载
- fragment 懒加载
- Fragment懒加载
- Fragment 的懒加载
- Fragment 懒加载实战
- Fragment 的懒加载
- ViewPage Fragment 懒加载
- SpringMVC中出现“400 Bad Request错误(参数校验错误)
- VS2010 无法打开源文件 "stdafx.h"问题
- mysql分区表添加含自增列的主键
- Linux中通过/proc/stat等文件计算Cpu使用率
- iOS8 定位崩溃解决方法
- Fragment懒加载
- ztree使用示例
- 关于本人三极管使用的一些经验
- Echarts3通过ajax动态获取数据,30秒定时图表数据,设置图表线条颜色和粗细
- setBackgroundResource造成的OOM和setBackground引发的思考
- Unity大型国战手游《六龙争霸》性能测评精讲
- 采用流的形式存储图片进行上传图片
- CSS基础案例展示
- 考研个人经验分享