博客
关于我
ListView工作原理、卡顿及OOM--android
阅读量:85 次
发布时间:2019-02-25

本文共 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

你可能感兴趣的文章
MySQL 用 limit 为什么会影响性能?有什么优化方案?
查看>>
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
查看>>
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>