Android App 性能评测与调优

一、内存优化的目的以及工具介绍
内存对于移动设备来说是一种稀缺资源。
Android内存不足带来的问题:OOM;UI不流畅
内存
指标:占用,泄露多少
UI流畅度
指标:帧数,响应时间
IO
指标:阻塞式响应时间

DDMS工具(Eclipse环境)
Heaps
Heap size
Allocated
Allocation Tracker
MAT(Memory Analyzer)
Leak Suspects 内存泄露报告
Top Consumers 占用者报告
Histogram 每个Class占用内存
Dominator Tree:列出那些对象占用内存最多,以及谁在保留这些对象。
android.os.Debug

内存测试的步骤:
1. 编译代码
2. 选定测试场景(来自于经验&开发)
3. 测试场景转换成用例
4. 跑起工具Run用例
5. 结合代码,分析

二、Android APP内存的主要问题分析与总结
1、Static——常见于单例模式
2、多线程生命周期过长,导致本该释放的资源没有释放
3、大胖子Bitmap
4、Cursor——不能单单close

开发人员能做的:
1. 及时的销毁
2. 设置一定的采样率
3. 巧妙地运用软引用(SoftReference)

private ImageView preview;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri), null, options);
preview.setImageBitmap(bitmap);
  1. Cursor用完记得关掉;CursorAdapter可以再onDestroy中关掉。
protected void onDestroy() {
    if (mAdapter != null && mAdapter.getCursor() != null) {
    mAdapter.getCursor().close();
    }
    super.onDestroy();
}

三、UI绘制原理以及量化工具
影响UI流畅度的原因:
1. 主线程干的活太多,UI没时间来相应用户操作。
2. 阻塞式方法执行时间过长。
3. 不太合理的UI绘制方式,导致新的UI显示出来时出现顿挫感。

同时了解下Android怎么绘制UI:
1. 读取XML(inflate)
2. 计算大小(measure)
3. 布局坐标计算(layout)
4. 绘制到屏幕(draw)
其中2、3两步最为耗时。

垂直同步

四、如何获取应用的UI流畅度

五、IO对性能的影响
1. SQLite,xml类
优点:稳定、可靠、保证原子性
缺点:效率低
Read
(1)异步化——不要阻塞在主线程
(2)预判+缓存——在listview中预加载下面的item到缓存
(3)避免复杂的查询语句
Write
(1)异步化
(2)仅支持文件锁
(3)善用索引
(4)善用SQLite事务机制
(5)善用UPDATE…WHERE…
2. 文件类
优点:简单、快速
缺点:无原子性保证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值