Android性能优化—耗电优化

作为移动设备,电池重要性不言而喻。

怎么耗电

耗电.png

通过上图可以知道,用户通过软件调用硬件资源而产生了耗电,那么我们可以控制软件调用硬件的频次以此达到降低耗电的目的。那么我们有哪些硬件是可以控制的呢?


耗电硬件.png

移动设备元件耗电大户

下面我就挑几个常用的元器件聊一聊

一、视频、音频、收音机

在使用这些功能的使用时候,他牵涉的不单单一个元器件的问题,而是更多,所以我们在使用这些功能的时候要做到离开即刻关闭释放。早期做直播的时候,朋友问我为啥打开直播看了半小时就手机发烫呢,如果你的应用也出现此种情况,就要赶快检测以下几点了:

1、线程数是否暴增。

2、长链接数是否增加了,是否可以考虑合并。

3、解码效率是否很快。

4、弹幕是否做到复用了,是否存在内存泄露问题。

5、动画特效是否及时释放,执行效率是否很快。

6、承载功能的实例是否存在多份。

7、检查内存、cpu使用情况。

二、无线网络

无线网络包括移动网络和wifi两种情况。通过发现移动网络是比wifi更加耗电的。

移动网络

移动网络数据传输有3种状态:

高功率状态:网络激活,允许设备以最大传输速率进行传输。
低功率状态:传输速率低于15kbps,耗电是高功率状态的一半,一般不能直接从程序中进入该状态,而是由高功率状态降级进入。
空闲状态:没有数据连接需要传输,耗电最少。

可以看出,三种状态耗电不同,要使耗电最低应该尽量保持状态在空闲或低功率下。从空闲状态转换到高功率状态大概需要2s,从低功率状态转换到高功率状态需要1.5s。应用中每创建一个网络连接,网络射频都会转到高功率状态,数据传输完毕降回低功率状态,降回过程需要5s,这5s耗电量保持在高功率状态,低功率降回到空闲状态需要12s,期间一直保持低功率状态。所以每次的数据传输都将导致将近20s电量的消耗。

WIFI网络

WIFI在active状态下有4种模式:低功率、高功率、低传输、高传输。
当从低(高)功率状态传输数据时,WIFI会暂时进入相应的低(高)传输状态,一旦数据传输完毕就回到初始状态。

WIFI耗电是受包率(每秒接收和发送的数据包)和网速因素影响的。如果因素良好,即网络良好时,数据传输的很快,所以WIFI的高功率状态维持时间很短。这也就是为什么说移动网络耗电高于WIFI耗电,因为同样的数据大小传输时,移动网络固定状态转换就需要近20s的电量消耗。

通过上面了解网络连接过程,应该心里有了大概的优化建议。

网络优化方案:

1、文本和文件压缩传输。

不管发送还是请求数据,在数据传输过程中使用gzip将数据进行压缩。经过压缩的数据需要更短的时间传输即可完成,这样使得无线所处的高功率状态时间更短,从而减少了耗电。

2、精简文本文件,去掉文本中空行、空格、注释等无意义内容。

3、请求一个图片时,客户端提供一个分辨率大小,服务器根据分辨率把裁剪缩放后的图片给客户端返回,采用使用webp图片。

4、减少网络高功率保持时间。

5、减少网络请求次数

a、使用缓存。

b、合并请求,将多个接口请求批量请求。

三、CPU

cpu作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

通过上面的两个概念我们大概知道,一个我们负责设备运算和控制的元器件,一个是程序运算调度的最小单位。

CPU被高频次使用大概有以下几个原因:

1、程序运算复杂(高运算量),例如高精度等,导致CPU满负荷运载

2、程序线程短时间内无规则抢占CPU资源。

3、wakelock唤醒。

4、定时器。

四、其他

我们用的多是GPS定位、Sensor遥感,只有当我们需要的时候才去打开这些硬件资源,并且及时释放。

你可能感兴趣的:(Android性能优化—耗电优化)