解决viewpager嵌套下的oom
来源:互联网 发布:上海数据恢复中心 编辑:程序博客网 时间:2024/05/29 11:46
最近在做一个项目,需要用radiogroup做指示器切换viewpager,同时在第一个viewpager中嵌套一个viewpager的购物项目,如图:
一开始做的很顺利,但是最后在频繁切换tab时发现问题,会出现oom,
在频繁切换tab时,通过
long maxMemory = Runtime.getRuntime().maxMemory();long freeMemory = Runtime.getRuntime().freeMemory();long totalMemory = Runtime.getRuntime().totalMemory();
发现totalMemory的值逐渐逐渐增长,逼近线程的vm heap的16M最大值,最后导致oom;
然后一点一点的打桩才找到问题原因:
原来是,因为的布局结构嵌套的比较深,在切换tab是要频繁调相应pager 对象中的initData 方法,而该方法中的因为又有viewpager,又需要填充view对象和利用findViewbyid找控件,不断的切换tab就是不断地新建view对象,逐步在增加totalMemory,最后oom.
解决办法:
借鉴了listView的convertView 的操作方法,构建静态变量用来存放填充后的view 对象和findviewbyid找到的控件对象,
public static View menuConvertView;private static IndexMenuViewPagerHolder menuHolder;public static IndexMenuViewPagerHolder getMenuHolder() {return menuHolder;}public static void setMenuHolder(IndexMenuViewPagerHolder menuHolder) {HolderUtils.menuHolder = menuHolder;}////////////////////////////////////////获取TemplatePager的holder///////////////////////////public static View templateConvertView;private static templateViewHolder templateHolder;public static templateViewHolder getTemplateHolder() {return templateHolder;}public static void setTemplateHolder(templateViewHolder templateHolder) {HolderUtils.templateHolder = templateHolder;}
这样在频繁切换时,不用再新建,而是直接到静态变量中取,,本身inflate和findviewbyid都是很耗费性能的,这样一来又提高了速度,完美解决了oom
if(HolderUtils.templateConvertView==null){HolderUtils.templateConvertView=View.inflate(mActivity, R.layout.homedetail_pager, null);holder = new templateViewHolder();holder.headersListView = (HeadersListView) HolderUtils.templateConvertView.findViewById(R.id.lv_homelistview);HolderUtils.setTemplateHolder(holder);}else{holder=HolderUtils.getTemplateHolder();}
阅读全文
0 0
- 解决viewpager嵌套下的oom
- 解决viewpager嵌套scrowllview或者viewpager嵌套viewpager的问题
- ViewPager嵌套ViewPager滑动问题的解决
- ViewPager嵌套ViewPager的冲突解决
- 解决viewpager嵌套viewpager,子viewpager无法滑动的问题
- 解决ViewPager双层嵌套的滑动问题
- 解决ViewPager双层嵌套的滑动问题
- 解决ViewPager双层嵌套的滑动问题
- 被嵌套的ViewPager滑动失效解决
- ScrollView嵌套ViewPager滑动冲突的解决
- Listview 嵌套 Viewpager 滑动冲突的解决
- 解决嵌套viewpager滑动冲突的解决方案
- 解决ScrollView嵌套viewpager的冲突问题
- ViewPager 嵌套ViewPager 焦点解决
- 解决viewpager+glide查看大图OOM的问题
- 解决ViewPager嵌套后子ViewPager不能滑动的方法
- 解决ViewPager嵌套后子ViewPager不能滑动的问题
- 解决ScrollView嵌套ViewPager,导致ViewPager不能滑动的问题
- POJ-3414 POTS(BFS打印路径)
- C# 快速高效率复制对象另一种方式 表达式树
- C# 超高速高性能写日志 代码开源
- 正则表达式 如何匹配除了空格之外的所有字符
- ECharts 实现人民的名义关系图谱 代码开源
- 解决viewpager嵌套下的oom
- [asp.net mvc 奇淫巧技] 02
- git管理项目命令
- [asp.net mvc 奇淫巧技] 03
- [asp.net mvc 奇淫巧技] 04
- 树的dfs序
- CF 214 A System of Equations
- [asp.net mvc 奇淫巧技] 05
- 记一次sql server 性能调优,查询从20秒至2秒