Android app的性能优化

Android的性能优化

随着 Android 应用的开发,上线到越来越多的人开始下载,使用APP,对于不同手机,不同用户来说使用的体验可以说是决定这个用户是否还会继续使用这款APP最重要的衡量标准。

比如:

手机使用APP越来越卡
手机莫名的发烫
网络问题,内容加载不出来
手机掉电十分得快

而要提升用户的体验,就不得不说要对 Android 应用的性能进行优化。

当对于性能优化有一个很好的提升,那么就可以很好的改善Android应用的产品体验,同时面对各种各样的竞品来说,使用体验越好,才会吸引越来越“挑剔”的用户。

那么可以通过这篇文章,可以了解到那些地方我们可以优化?性能优化的指标是什么?性能优化的工具有哪些?
值得优化的地方

之前,介绍了性能优化的重要性,那么接下来我们聊一聊那些地方可能造成性能优化,只有知道了那些地方可能引起性能方面的问题,我们才能更加有针对性的进行优化。

冷启动的时间
三方SDK使用不合理的地方
代码当中是否频繁的调用创建新的实例
APP是否存在过渡绘制的问题
应用的监听,广播是否关闭
Handler、Observer、AsyncTask等非静态内部类导致的内存泄露
IO操作完成没有关闭的地方
网络请求不合理导致功耗的问题
后台服务常驻导致功耗的问题

性能优化的流程

说到底, 遇到了问题自然就要想如何解决这些问题。

解决问题的时候,要尽可能用数据说话,要有足够的多的测试来验证这个问题。
很多问题,在性能比较好,配置比较高的手机很难复现出来,所以我们可以选择一些低配置的设备进行测试。
对于性能的改善,也一定要保证Android应用的稳定,不能因为改善一个问题导致其他的问题。

graph TD
发现问题 --> 定位问题
定位问题 --> 解决问题
解决问题 --> 验证问题

这也是我们在解决BUG常用的一个流程方式。
导致性能优化现象、原因以及工具。
性能 现象 导致原因 检测工具
冷启动速度 黑、白屏,首帧出现慢 布局复杂,主线程阻塞,过度绘制,初始化太多内容 Hiearchy Viewer,StrictMode,TraceView,Hugo
流畅度 应用卡顿 过度绘制,主线程阻塞,手机内存不足,GC异常 StrictMode,TraceView,Hugo
内存 整机慢 内存占用过多,内存泄露 Leakcanary
功耗 发烫, 掉电快 硬件持续高负荷工作,频繁的网络访问,频繁的界面刷新,长时间不待机,后台服务持续工作 Android Studio开发者选项
解决方向
冷启动的速度

从Nimbledroid当中统计到APP冷启动的平均耗时基本都在3秒以内,甚至更快的都在2秒以内。
导致冷启动速度较慢的原因

问题:布局复杂、过度绘制
解决办法:去掉Window背景、增加一个启动背景、去掉复杂布局例如:merge、ViewStub、space、CoordinatorLayout

问题:UI阻塞
解决办法:启用子线程例如:AsyncTack、HandlerThread、IntentService、ThreadPool
流畅度优化

问题:布局复杂、过度绘制
解决办法:去掉Window背景、增加一个启动背景、去掉复杂布局例如:merge、ViewStub、space、CoordinatorLayout

问题:UI阻塞
解决办法:启用子线程例如:AsyncTack、HandlerThread、IntentService、ThreadPool

问题:整机内存
解决办法:内存泄露优化(非静态内部类、静态代码检查、系统SDK泄露)

问题:内存占大
解决办法:合理的进行缓存,压缩图片,并把图片放在合理位置
功耗优化

问题:频繁的网络请求
解决办法:网络请求合并,改善网络请求策略

问题:频繁的界面刷新
解决办法:适当的缓存,触发式的响应刷新

问题:长时间不待机
解决办法:合理的使用WakeLock,关闭Service

问题:后台持续工作
解决办法:系统进行优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安卓兼职framework应用工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值