本文共 835 字,大约阅读时间需要 2 分钟。
Android ListView工作原理完全解析,带你从源码的角度彻底理解-
ListView卡顿或UI卡顿:
FPS绘制率过低。
1..Adapter的getView方法里面convertView没有使用setTag和getTag方式;
2.在getView方法里面ViewHolder初始化后的赋值或者是多个控件的显示状态和背景的显示没有优化好,抑或是里面含有复杂的计算和耗时操作; 3.在getView方法里面 inflate的row 嵌套太深(布局过于复杂)或者是布局里面有大图片或者背景所致; 4.Adapter多余或者不合理的notifySetDataChanged;5.listview 被多层嵌套,多次的onMessure导致卡顿,如果多层嵌套无法避免,建议把listview的高和宽设置为fill_parent. 如果是代码继承的listview,那么也请你别忘记为你的继承类添加上LayoutPrams,注意高和宽都是fill_parent的;
6.分页加载;图片的三级缓存;列表滚动时不加载图片
OOM:
出现oom,主要是以下几个方面: 一、加载对象过大 二、相应资源过多,没有来不及释放。基于Android开发多媒体和游戏应用时,可能会挺经常出现Out Of Memory 异常
解决这样的问题,也有一下几个方面: 一:在内存引用上做些处理,常用的有软引用、强化引用、弱引用 二:在内存中加载图片时直接在内存中做处理,如:边界压缩. 三:动态回收内存 四:优化Dalvik虚拟机的堆内存分配 五:自定义堆内存大小android oom 全解析--http://www.cnblogs.com/manuosex/p/3661762.html
Android Out Of Memory(OOM) 的详细研究-- http://www.cnblogs.com/wanqieddy/archive/2012/07/18/2597471.html