简介
目前我负责开发的360 hola weather项目, 收到了360 OS的一个性能要求反馈, 一是要求apk size < 10 MB, 目前是12.2MB, 二是要求内存占用 < 42MB.
NimbleDroid 是美国哥伦比亚大学的博士创业团队研发出来的分析Android app性能指标的系统,分析的方式有静态和动态两种方式,
其中静态分析可以分析出APK安装包中大文件排行榜,各种知名SDK的大小以及占代码整体的比例。
动态分析可以给出冷启动时间, 列出block UI的具体方法, 内存占用, 以及Hot Methods, 从这些分析报告中, 可以定位出具体的优化点.
使用方法其实很简单, 只需要上传你apk, 网站后台会自动分析, 并给出直观化的分析报告.
apk文件大小优化
首先, 查看apk中的文件大小排行榜.
从中, 可以非常明显的看到一些图片png文件的使用是不当的.
非常简单的通过tinypng网站进行处理后, 就可以得到非常好的优化效果.
初步优化后的apk文件大小已经满足了360OS的要求.
这是从资源文件的角度入手, 从代码角度优化, 可以查看报告中的方法数报告. 从中可以快速定位出项目使用各个SDK的情况, 从中寻找优化空间.
冷启动优化
这里给出了 8 个导致冷启动慢的原因点. 优秀app的冷启动时间应该控制在2秒内, 目前是2.8秒, 超出了800毫秒.
Real Time 2.8 seconds0.80 seconds longer than max recommended time.
查看详情报告, 可以看到block UI的具体方法名.
之前在浏览器部门, 阅读chrome源码, google用到了
Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
@Override
public boolean queueIdle() {
return false;
}
});
来优化页面的启动速度. 这里正好可以用到. 把一些方法抽取出来. 在页面绘制后, 等到UI线程空闲的时候, 再去执行这些耗时方法.
优化后的结果
冷启动优化了300ms出来.
---DONE.---