博客
关于我
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分组函数
查看>>
MySQL分组查询
查看>>
Mysql分表后同结构不同名称表之间复制数据以及Update语句只更新日期加减不更改时间
查看>>
mySql分页Iimit优化
查看>>
mysql列转行函数是什么
查看>>
mysql创建函数报错_mysql在创建存储函数时报错
查看>>
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
查看>>
mysql加强(5)~DML 增删改操作和 DQL 查询操作
查看>>
mysql加强(6)~子查询简单介绍、子查询分类
查看>>
MySqL双机热备份(二)--MysqL主-主复制实现
查看>>
mysql启动以后会自动关闭_驾照虽然是C1,一直是开自动挡的车,会不会以后就不会开手动了?...
查看>>
MySQL启动失败:Can't start server: Bind on TCP/IP port
查看>>
mysql启动报错The server quit without updating PID file几种解决办法
查看>>
mysql和oorcale日期区间查询【含左右区间问题】
查看>>
MySQL和SQL入门
查看>>
mysql在centos下用命令批量导入报错_Variable ‘character_set_client‘ can‘t be set to the value of ‘---linux工作笔记042
查看>>
Mysql在Linux运行时新增配置文件提示:World-wrirable config file ‘/etc/mysql/conf.d/my.cnf‘ is ignored 权限过高导致
查看>>
Mysql在Windows上离线安装与配置
查看>>
Mysql在离线安装时提示:error: Found option without preceding group in config file
查看>>
MySQL基础day07_mysql集群实例-MySQL 5.6
查看>>