Android性能测试与优化

2019-10-31  本文已影响0人  LongSh1z

本文目录:
一、性能测试
1.内存消耗 2.CPU占用 3.帧率GPU 4.流量消耗 5.电量消耗
二、性能优化
1.卡顿优化 2.耗电优化 3.安装包大小优化 4.内存优化 5.稳定性优化

一、性能测试

1、内存消耗
1.1 使用Android Profiler
1.2 使用adb

输入命令:adb shell dumpsys meminfo PackageName

1.3 使用Lint

Android Studio->Analyze->Inspect Code

1.4 使用MAT
1.5 使用Heap Snapshot
2、CPU占用
2.1 使用Android Profiler
3、帧率GPU
3.1 使用“GPU呈现模式分析”中的“在adb shell dumpsys gfxinfo中”选项。

① 进入Android设备的开发者选项,勾选“GPU呈现模式分析”中的“在adb shell dumpsys gfxinfo中”选项。

② 在电脑的terminal中进入<SDK目录>下的platform-tools文件夹,输入命令adb shell dumpsys gfxinfo 包名,结果如图所示

③ 参数说明

//表明当前dump的为设置界面的帧信息,pid为7821

//本次dump搜集了105帧的信息

//15帧中有15帧的耗时超过了16ms,卡顿概率为100.00%

//垂直同步失败的帧

//处理input时间超时的帧数

//因UI线程上的工作导致超时的帧数

//因bitmap的加载耗时的帧数

//因绘制导致耗时的帧数

//直方图数据,表面耗时为0-5ms的帧数为0,耗时为5-6ms的帧数为0,同理类推。

3.2 使用“GPU呈现模式分析”中的“在屏幕上显示为条形图”选项。**

① 进入Android设备的开发者选项,勾选“GPU呈现模式分析”中的“在屏幕上显示为条形图”选项。

② 操作自己的APP,屏幕上即有相关显示。

4、流量消耗
4.1 使用adb(Linux环境下)

获取进程ID指令

adb shell ps|grep packagename

获取进程ID流量

adb shell cat /proc/pid/net/dev

4.2 使用GT(随身调,腾讯MIG内部)
5、电量消耗
5.1 使用adb

输入命令:

①adb shell dumpsys batterystats PackageName(Android 5.0后引入)

//获取单个应用的耗电量信息

②adb shell dumpsys battery

//获取设备的是否充电,电量,电压等信息

(注:后续可以用battery-historian将输出可视化)

二、性能优化

1、卡顿优化
1.1 原因
1.2 优化方案
1.2.1 UI优化:
1.2.2 启动优化:
1.2.3 刷新机制合理化
2、耗电优化
2.1 原因

在 Android 平台上,由于应用程序可以无限制地注册系统事件(BroadcastReceiver),在这些事件中被不停地唤醒,即使应用已经退到后台,做了很多毫无必要的事情,却导致电量消耗。因此,应用开发者在实现需求的同时,需要尽量减少电量的消耗。

2.2 优化方案
3、安装包大小优化
3.1 原因

应用的安装包越大,用户下载的门槛越高,特别是在移动网络情况下,所以减小安装包大小可以让更多的用户愿意下载和体验产品。

3.2 优化方案
3.2.1 代码混淆优化
3.2.2 res资源优化
3.2.3 代码优化
3.2.4 lib资源优化
3.2.5 assets资源优化
4、内存优化
4.1 原因

在 Android 系统中有个垃圾内存回收机制,在虚拟机层自动分配和释放内存,因此不需要在代码中分配和释放某一块内存,从应用层面上不容易出现内存泄漏和内存溢出等问题,但是需要内存管理。Android 系统在内存管理上有一个 Generational Heap Memory 模型,内存回收的大部分压力不需要应用层关心, Generational Heap Memory 有自己一套管理机制,当内存达到一个阈值时,系统会根据不同的规则自动释放系统认为可以释放的内存,也正是因为 Android 程序把内存控制的权力交给了 Generational Heap Memory,一旦出现内存泄漏和溢出方面的问题,排查错误将会成为一项异常艰难的工作。除此之外,部分 Android 应用开发人员在开发过程中并没有特别关注内存的合理使用,也没有在内存方面做太多的优化,当应用程序同时运行越来越多的任务,加上越来越复杂的业务需求时,完全依赖 Android 的内存管理机制就会导致一系列性能问题逐渐呈现,对应用的稳定性和性能带来不可忽视的影响,因此,解决内存问题和合理优化内存是非常有必要的。

4.2 优化方案
4.2.1 内存泄漏优化
4.2.2 其他优化
5、稳定性优化
5.1 原因

Android 应用的稳定性定义很宽泛,影响稳定性的原因很多,比如内存使用不合理、代码异常场景考虑不周全、代码逻辑不合理等,都会对应用的稳定性造成影响。其中最常见的两个场景是:Crash 和 ANR,这两个错误将会使得程序无法使用。

5.2 优化方案
上一篇下一篇

猜你喜欢

热点阅读