ViewPager取消预加载并且缓存页面
来源:互联网 发布:python assert 用法 编辑:程序博客网 时间:2024/05/17 23:07
今天遇到一个问题,ViewPager+2个fragment的时候,这样就会同时访问2个页面的数据,这样虽然有时很好,但是用户只需看一个Fragment时,我们就做了一些多余工作加载了第二个Fragment。在这只需要取消Fragment的预加载即可,只有当用户切换到某个Fragment才加载..,在网上看到用LazyViewPager可以 实现,但是切换的页面的时候 有重新加载,所以不行
网上查询了下资料
介绍两个方法void setUserVisibleHint(boolean isVisibleToUser)、boolean getUserVisibleHint(),它们分别用作设置/获得Fragment可见状态,我们可以重写Fragment在其中做判断,代码如下:
@Overridepublic void setUserVisibleHint(boolean isVisibleToUser) {super.setUserVisibleHint(isVisibleToUser);if(<strong>isVisibleToUser</strong>&&<strong>isInit</strong>)//判断是否可见 并且是否已经初始化过,以防空指针{getData();}else {isInit=false;}}
@Overridepublic void onViewCreated(View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);initView(view);isInit=true;//设置已经初始化}第一次进来ViewPager会预加载 会先执行setUserVisibleHint() -----》onCreateView()-----onViewCreated()------》onResume()-----》此时isVisibleToUser=false , isInit=false; 当执行完OnCreateView()的时候,isInit=true,而当用户切切换到这个fragment的时候 , 此时isVisibleToUser=true;并且isInit=true,成立,便会加载数据 ,加载数据完成之后 要设置isInit=true; ,这样,当用户再次切换回来的便不会执行刷新 ,也就实现了延时加载
转载请注明出处
0 0
- ViewPager取消预加载并且缓存页面
- ViewPager 取消预加载
- ViewPager取消预加载
- ViewPager取消预加载
- 顶部导航条+Viewpager+Fragment取消页面预加载
- Android ViewPager 取消预加载
- Android ViewPager 取消预加载
- android Viewpager取消预加载
- ViewPager+Fragment取消预加载
- viewpager+fragment 重写viewpager取消预加载
- fragment 懒加载 viewpager 取消预加载
- ViewPager+Fragment取消预加载(延迟加载)
- Fragment+Viewpager 取消懒加载/预加载
- ViewPager取消缓存策略
- ViewPager取消缓存策略
- 解决ViewPager取消预加载问题
- 问题记录:viewpager取消数据预加载
- 取消ViewPager中fragment的预加载
- mysql属性与java类型对照表
- Html5中的Canvas宽度为100%
- Spring AOP 注解方式实现的一些“坑”
- Android端实现Cookie机制
- springMVC中使用dubbo注解配置的问题
- ViewPager取消预加载并且缓存页面
- Leveldb windows 编译
- 求两直线的交点
- linux git 显示某次提交的中修改内容
- Spring Boot 开启AOP的方法
- 面向站长和网站管理员的Web缓存加速指南[翻译] 原文(英文)地址: http://www.mnot.net/cache_docs/ 版权声明:署名-非商业性使用-禁止演绎 2.0 这是一篇知识性
- Spring_IOC配置与应用学习笔记
- Redis安装及主从配置
- Foundation-NSDictionary