ViewPager+Fragment 懒加载学习笔记(一)
来源:互联网 发布:截取串口数据代码 编辑:程序博客网 时间:2024/05/22 18:45
需求
想要 Fragment 显示时候再去加载数据,现在存在问题是:选中当前 Fragment 时候,它两旁的 Fragment 也会同时加载数据。如果页面数据量比较大或者加载较多大图时候(例如:加载相册集),会导致卡顿。
分析问题
1、为什么 ViewPager 会有预加载机制?
- 个人猜测是为了使 ViewPager 来回切换流畅;
- 网上查到资料都是 如何防止或者禁止 ViewPager 的预加载,其中关键方法
private static final int DEFAULT_OFFSCREEN_PAGES = 1;private int mOffscreenPageLimit = DEFAULT_OFFSCREEN_PAGES;public void setOffscreenPageLimit(int limit));
2、分析 setOffscreenPageLimit 这个方法
ViewPager 可以通过设置 setOffscreenPageLimit(1); // 表示预告加载的页面数量是 1,假设当前有四个Fragment的tab,显示一个,预先加载下一个.这样你在移动前就已经加载了下一个界面,移动时就可以看到已经加载的界面了;
为了解决禁止预加载问题,如果通过这个方法会不会生效?
答案是:无效。
为什么?
通过分析源码,会看到 limit 这个参数,如果小于 DEFAULT_OFFSCREEN_PAGES (DEFAULT_OFFSCREEN_PAGES = 1)这个默认值, limit 会被赋值 默认值 DEFAULT_OFFSCREEN_PAGES。所以我们为了取消预加载机制,通过设置 setOffscreenPageLimit(0)是没有用的。
源码:
private static final int DEFAULT_OFFSCREEN_PAGES = 1;private int mOffscreenPageLimit = DEFAULT_OFFSCREEN_PAGES;public void setOffscreenPageLimit(int limit) { if (limit < DEFAULT_OFFSCREEN_PAGES) { Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " + DEFAULT_OFFSCREEN_PAGES); limit = DEFAULT_OFFSCREEN_PAGES; } if (limit != mOffscreenPageLimit) { mOffscreenPageLimit = limit; populate(); }}
解决方案
下一篇文章进行学习总结
链接: ViewPager+Fragment 懒加载学习笔记(二)
阅读全文
1 0
- ViewPager+Fragment 懒加载学习笔记(一)
- ViewPager+Fragment 懒加载学习笔记(二)
- viewpager+fragment学习笔记
- ViewPager+Fragment懒加载
- Viewpager Fragment懒加载
- ViewPager+Fragment懒加载
- ViewPager+Fragment懒加载
- viewPager fragment 懒加载
- fragment viewpager 懒加载
- ViewPager加载Fragment懒加载
- viewpager+fragment的懒加载
- ViewPager实现Fragment懒加载
- viewpager+fragment 懒加载操作
- ViewPager+Fragment懒加载方式
- viewpager嵌套Fragment懒加载
- viewpager fragment 实现懒加载
- Android ViewPager + Fragment懒加载
- ViewPager + Fragment实现懒加载
- 浅谈c++placement new
- Android依赖库版本冲突的一个解决方法
- Android-DeviceUtil及状态栏高度获取
- 使用0x3f3f3f3f表示无穷大
- java中的包装类型转换
- ViewPager+Fragment 懒加载学习笔记(一)
- oracle优化建议
- The import org.springframework.context.support.ClassPathXmlApplicationContext cannot be resolved
- 记录最近遇到的坑
- BootStrap FileInput 插件实现多文件上传前端功能
- spring面向切面编程
- linux记录锁(范围锁)
- HDU 6047 Maximum Sequence 贪心 区间最值
- Druid 连接池 JDBCUtils 工具类的使用