的确,今天有那么一丢丢不想日更,借口是今天比较忙,确实很忙,一整天都在思考,很疲惫,下班了大脑就想放空,不想做任何的思索,不想去想任何东西,但生活中总有一些事情打乱你的计划,挑战你的毅力,渐渐的迷失自我,回归懒惰……
我想每一个来到的书友,都是想在这里做自己,更高层次一点的就是实现自我价值。
你呢?让你每天坚持的理由是什么?
重要的是走在寻找自己的路上........
这篇文章基于自己的工作经验,对Android的性能优化做个总结,算是随笔,方便随时查阅。
可以把用户体验的性能问题主要总结为3个方面,我们就可以从这3个方面着手优化;
1、界面流畅 :也就是运行速度快,使用时避免出现卡顿,响应速度快,减少用户等待的时间,满足用户期望。
2、性能稳定:减低 crash 率和 ANR 率,不要在用户使用过程中崩溃和无响应。
3、应用安装包小:安装包小可以降低用户的安装成本。
一 、卡顿优化
卡顿的场景有很多,按场景可以分为4类:UI 绘制、应用启动、页面跳转、事件响应。
造成主要有下面两种情况:
界面绘制:主要原因是绘制的层级深、页面复杂、刷新不合理,由于这些原因导致卡顿的场景更多出现在UI和启动后的初始界面以及跳转到页面的绘制上。
数据处理:导致这种卡顿场景的原因是数据处理量太大,一般分为三种情况,一是数据在处理UI线程,二是数据处理占用CPU高,导致主线程拿不到时间片,三是内存增加导致GC频繁,从而引起卡顿。
二 、内存优化
内存优化着重关注点在于内存的分配和内存的回收。
在Android系统中,内存分配实际上是对堆的分配和释放;内存回收依赖于GC,GC通过确定对象是否被活动对象引用来确定是否收集对象,进而动态回收无任何引用的对象占据的内存空间.
Memory Monitor是一款使用非常简单的图形化工具,可以很好地监控系统或应用的内存使用情况,主要有以下功能:
1、显示可用和已用内存,并且以时间为维度实时反应内存分配和回收情况。
2、快速判断应用程序的运行缓慢是否由于过度的内存回收导致。
3、快速判断应用是否由于内存不足导致程序崩溃。
做到内存优化,切记要避免内存泄漏及内存溢出。
三、稳定性优化
Android应用的稳定性定义很宽泛,影响稳定性的原因很多,比如内存使用不合理、代码异常场景考虑不周全、代码逻辑不合理等,都会对应用的稳定性造成影响。其中最常见的两个场景是:Crash和ANR,这两个错误将会使得程序无法使用,比较常用的解决方式如下:
提高代码质量:比如开发期间的代码审核,看些代码设计逻辑,业务合理性等。
代码静态扫描工具:常见工具有Android Lint。
Crash监控:把一些崩溃的信息,异常信息及时地记录下来,以便后续分析解决。
Crash上传机制:在Crash后,尽量先保存日志到本地,然后等下一次网络正常时再上传日志信息。
四、安装包大小优化
应用安装包大小对应用使用没有影响,但应用的安装包越大,用户下载的门槛越高,特别是在移动网络情况下,用户在下载应用时,对安装包大小的要求更高,因此,减小安装包大小可以让更多用户愿意下载和体验产品。
减少安装包大小的常用方案:
代码混淆:使用ProGuard代码混淆器工具,它包括压缩、优化、混淆等功能。
资源优化:比如使用Android Lint删除冗余资源,资源文件最少化等。
图片优化:比如利用AAPT工具对PNG格式的图片做压缩处理,降低图片色彩位数等。
避免重复功能的库,使用WebP图片格式。
插件化:比如功能模块放在服务器上,按需下载,可以减少安装包大小。