前言
随着手机使用时间的增长,手机的待机时间也越发被关注。本文不讨论外界环境,比如高温环境、低温环境对手机待机时间的影响,只关注相同外界条件下,同一个应用如何通过耗电优化确保手机能够拥有更长的待机时长。
耗电监控
在WWDC 2018 What’s New in Energy Debugging,苹果推出了Energy Log日志查看应用耗电问题。通过定期获取线程堆栈,当应用在前台平均三分钟或者后台平均一分钟内CPU占用超过80%,系统会将收集到的线程堆栈组合成一颗函数调用树形成Energy Log(从Xcode -> Window -> Organizer -> Energy可以查看Energy Log)。
在开发过程中,如何动态监控应用的耗电状况呢?微信团队在Matrix中扩展实现了耗电监控功能,接入Matrix后需要对WCBlockMonitorConfiguration进行如下配置:
- bGetPowerConsumeStack 设置为 YES ,即能让应用开启耗电监控;
- powerConsumeStackCPULimit 设置应用耗电的CPU阈值,默认值为80%。
Matrix的耗电监控实现流程如下: