Android功耗分析

系统功耗跟踪

  • 使用方法,搜集日志
adb shell dumpsys batterystats --reset
//  运行...
adb bugreport bugreport.zip
  • 导入Battery Historian分析
    采集时间从前一天晚上十点到当天早上十点,总共12个小时,手机禁止放置,灭屏状态
    这里写图片描述
参数名作用
CPU runningCPU的运行状态,是否被唤醒。如果把鼠标放到上面去,还能看到更多的信息,如CPU唤醒的原因。
Screen亮屏状态,可以看到图表中该项着色有间隔,这是因为实验期间我关闭过屏幕,每关闭一次屏幕,着色就被打断。
Top app当前最上层的app
Mobile network type网络类型,其中需要注意的是,“免费网络可能包括wifi、蓝牙网络共享、USB网络共享”
Mobile radio active移动蜂窝信号 BP侧耗电,通常是指SIM卡,数据链接。该栏过多着色,间隔多。表示功耗也会高。
WiFi supplicantwifi是否开启
WiFi signal strengthwifi强度
Wifi Runningwifi连接情况下的耗电情况
Audio音频是否开启
Battery Level电量
Plugged是否正在充电,以及鼠标放在上面的时候可以看到充电类型,包括AC(充电器)、USB、其它(例如无线充电)
Battery Level开始测试时的电量,之前抓取的图可以看到电量是100,满电状态。
Top app前台应用,如果要分析应用的耗电情况,那么在测试期间,就该保证应用一直处于前台。
Userspace wakelock记录wake_lock模块的工作时间

功耗分析

doze模式一直处于关闭状态

  • wakelock
    这里写图片描述
    可以看出 wakelock的使用,系统被频繁唤起并持有wakelock的前五项如下(按使用时间排序)
    统计数据如下
RankingNameUidDuration / HrCount / Hr MinimumTotal DurationTotal Count
0com.ume.browser : DroiPushService_V2100311m26s742ms11.6318m54.015s152
1ANDROID_SYSTEM : alarm10001s851ms14.6924.203s192
2com.asksven.betterbatterystats : BBS_WAKELOCK_WHILE_SAVING_REF10102340ms0.084.446s1
3ANDROID_SYSTEM : IpReachabilityMonitor.wlan01000268ms0.083.506s1
4com.ss.android.article.news : job/com.ss.android.account.AccountProvider/com.ss.android.article.news/今日头条:android10096132ms3.751.73s49

其中com.ume.browser : DroiPushService_V2唤醒时间最长达18min
- JobScheduler
这里写图片描述

doze模式开启状态

在低电耗模式下,您的应用会受到以下限制:

  • wakelock
    这里写图片描述

  • JobScheduler
    这里写图片描述

doze模式下所有的wakelock会被忽略,网络暂停,alarm会被推迟到下一个maintenance window,job被禁止
只会在maintenance window期间才会使用网络和执行挂起的任务

功耗优化

从上面的图中可以看出影响手机功耗的主要是wakelock,JobScheduler,alarm,GPS,wifi等,针对这些情况功耗优化可以从以下几个方面入手
- 使能doze模式(需要motion sensor支持,doze第一阶段不需要motion sensor),在手机处于完全禁止待机的时候,doze模式对手机的功耗很有帮助,doze模式下会影响全局的wakelock,alarm,job,网络等
- 将有限制条件出发的service更换为JobScheduler,因为在创建JobScheduler时可以设置相应的触发条件才执行(比如条件 需要连网状态需要充电状态),触发条件交由系统来管理
- wakelock.acquice()方法最好带超时参数,因为有些网络请求很慢导致系统一直持续wake状态
- 监听电池电量和充电状态来决定后台更新
- 监测联网状态,重复闹铃和后台服务的一些最常见用途是安排定期从互联网资源、缓存数据更新应用数据,或者执行长时间下载,如果监测到没有网络连接就不要唤醒设备
- 对于流氓软件频繁后台唤醒可以采用心跳对齐(alarm)

参考

Android Performance Patterns

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值