关键词:
为了达到界面效果,我们有时需要使用到TabLayout+ViewPager的方式来布局界面,然而ViewPager的adapter总是默认把与当前可见的fragment相邻的两个fragment给加载出来.一旦界面数据太多,信息量太大,往往造成资源过多消耗,界面卡顿,甚至会造成程序崩溃...这时,我们就需要使用到fragment的懒加载方式,即第一次看到的时候自动加载当前页面,相邻的fragment不再预加载.
Google官网提供给我们setUserVisibleHint这个方法。(API地址:http://androiddoc.qiniudn.com/reference/android/app/Fragment.html#setUserVisibleHint(boolean) ),这个方法的调用时期:当前fragment对用户可见时调用.
那么,是否可以在setUserVisibleHint(boolean isVisibleToUser)里进行数据加载操作来实现懒加载呢?
可以是可以,如果你只是需要数据的懒加载的话,但如果你还有以下的需求,那么这种方式就不行了:
1、如果在Fragment可见时需要进行一些控件的操作,比如显示加载控件
2、如果还需要在Fragment从 ""可见" 到 "不可见”时进行一些操作的话,比如取消加载控件显示
经过调试,setUserVisibleHint()可能会在Fragment的生命周期之外被调用,也就是可能在view创建前就被调用,也可能在destroyView后被调用,所以如果涉及到一些控件的操作的话,可能会报 null 异常,因为控件还没初始化,或者已经摧毁了。
基于这个基础,我们需要达到具体的效果是:①预加载时只做轻量的初始化;
第一次可见状态下才开始加载数;
③在把生命周期拆成 “可见”与“不可见”状态
④不被繁琐的生命周期拖延时间;
上代码了:
这样的话,一个Fragment懒加载的基类就写完了,只需要让自己的子Fragment继承就好了.
androidfragment+viewpager的懒加载实现(代码片段)
...了四个组件之外,还有一种使用频率很高的组件——Fragment。在使用时我们通常需要在Fragment的各种生命周期方法中处理数据加载、页面刷新和资源释放等逻辑操作。但是当Fragment遇上了ViewPager,事情就变得有点不一样了... 查看详情
封装篇——fragment懒加载
为什么要做fragment的懒加载封装呢???一个字“懒”!!!我老大告诉我:不会偷懒的程序员不是个好厨师^~^^~^^~^我们可能会以viewpager(或其他容器)与多个Fragment组合使用,相信使用过的猿(媛)友们都碰到过下面的这些问题:... 查看详情
fragment数据懒加载及原理
...首页改版之后嵌套使用了ViewPager,业务未完全开放的那个fragment里嵌套了一个ViewPager,里面有多个fragment,这样每次打开首页都会去加载该page,然后是一连串的fragment初始化以及网络请求,所以为了解决该问题就不得不使用懒加... 查看详情
关于activity和fragment生命周期的问题(代码片段)
我从Activity和Fragment组件跟踪生命周期方法的回调,我有很多问题。我需要你帮助理解一些观点。情况1:一个具有一个片段的启动器活动,填充它。当应用程序启动时,Fragment变为活动状态,用户只能看到Fragment。Lyfecycle:活动:... 查看详情
关于页面切换的问题
我尝试在fragment中添加了一个viewpager,viewpager里面加载的两个页面,到现在都是显示的是空白这个时候,我就要看为什么其他页面添加viewpager可以成功,唯独这个不成功。这个时候,就是需要尝试了。如何尝试呢?就是先在screenC... 查看详情
实现viewpager懒加载的三种方法
方法一在Fragment可见时请求数据。此方案仍预加载了前后的页面,但是没有请求数据,只有进入到当前Framgent时才请求数据。优点:实现了数据的懒加载缺点:一次仍是三个Framgment对象,不是完全意义的懒加载12345678910111213141516171... 查看详情
swift中的懒加载
swift中的懒加载 //静态的,外界不能访问privatelazyvarbutton:UIButton=UIButton()//形式lazyvar名字:类型=类创建 查看详情
页面的懒加载
‘lazyQueue‘:{},‘isVisiable‘:function(elem){if(!elem)returnfalse;//console.log(($(window).scrollTop()+"::"+($(elem).offset().top+$(elem).outerHeight()))+"::"+(($(window).scrollTop()+$(window).height()) 查看详情
图片的懒加载方式
... 式,会降低用户的体验(顾客是上帝吗);而说到图片的懒加载的方式就是<!DOCTYPEhtm 查看详情
spring容器的懒加载
1、单例模式的对象什么时候被创建?是使用getBean()方法获取对象的时候创建呢?还是创建spring容器的时候创建?我们可以测试一下:先定义一个example类,为其定义一个无参数的构造方法:publicclassExampleBean{publicExampleBean(){Syste... 查看详情
三十最好用的懒加载
window.Echo=(function(window,document,undefined)‘usestrict‘;varstore=[],offset,throttle,poll;var_inView=function(el)varcoords=el.getBoundingClientRect();return((coords.top>=0&&coords.left 查看详情
图片的懒加载预加载(代码片段)
原理: 预加载原理:就是在网页全部加载之前,提前加载图片,当用户需要查看时可直接从本地缓存中渲染,以提供给用户更好的体验,减少等待的时间。 图片懒加载原理(缓载):... 查看详情
关于fragment的传值问题
...ttp://stackoverflow.com/questions/13700798/basic-communication-between-two-fragments上的评论内容。貌似官方提倡使用接口来实现fragment之间的传值问题,本文将持续更新。以下方法可以解决fragment之间的通信问题,但是还有其他的方法,... 查看详情
swiper.js多图片页面的懒加载lazyloading
swiper.js官网:http://www.swiper.com.cn/api/Images/2015/0308/213.html设为true开启图片延迟加载,使preloadImages无效。需要将图片img标签的src改写成data-src,并且增加类名swiper-lazy。背景图的延迟加载则增加属性data-background(3.0.7开始启用)。lazy... 查看详情
viewpager2+fragment操作笔记(代码片段)
ViewPager2+Fragment操作笔记文章目录ViewPager2+Fragment操作笔记ViewPager2简介实际操作效果RecycleView和Viewpage2的滑动冲突ViewPager2中Fragment的懒加载懒加载预加载FragmentStateAdapteronCreateViewHolderonBindViewHolderonViewAttachedToWindowFragmentStateAdapte... 查看详情
viewpager2+fragment操作笔记(代码片段)
ViewPager2+Fragment操作笔记文章目录ViewPager2+Fragment操作笔记ViewPager2简介实际操作效果RecycleView和Viewpage2的滑动冲突ViewPager2中Fragment的懒加载懒加载预加载FragmentStateAdapteronCreateViewHolderonBindViewHolderonViewAttachedToWindowFragmentStateAdapte... 查看详情
vue路由的懒加载和组件的按需加载方法(代码片段)
//aview:function(resolve)//require(["./a.vue"],resolve);//,//bview:function(resolve)//require(["./b.vue"],resolve);//aview:require("./a.vue"),bview:require("./b.vue"), “懒加载也叫延迟加载,即在需要的时候进行加载, 查看详情
图片网站中的懒加载和预加载(转)(代码片段)
懒加载和预加载的实现提到前端性能优化中图片资源的优化,懒加载和预加载就不能不说,下面我用最简洁明了的语言说明懒加载和预加载的核心要点以及实现懒加载什么是懒加载懒加载也就是延迟加载;当访问一个页面时,先将img... 查看详情