1.android doze Դ??
2.分析 Android 耗电原理后,飞书是这样做耗电治理
android doze Դ??
飞书在进行耗电优化时,深入理解了 Android 系统的耗电原理,包括模块功率和耗时统计。他们从 power_profile.xml 文件中获取每个模块的功耗数据,通过 BatteryStatsService 记录模块的双线指标源码运行时长。计算耗电量时,通过 BatteryStatsHelper 分析应用的使用情况,例如CameraPowerCalculator模块的简单统计。
Doze模式是关键的节能策略,分为Deep Doze和Light Doze,分别在满足不同条件后暂停非关键活动以节省电量。Deep Doze更严格,resize扩容源码而Light Doze允许在移动状态下进入。进入和退出策略涉及多种状态转换,通过DeviceIdleController类的源码实现。
飞书的耗电治理策略主要针对模块和状态进行,包括CPU、GPU/Display、网络、GPS、音频/摄像头/视频等,以及前台和后台状态。他们强化了监控体系,以精确分析每个模块的影刀源码功耗,并结合Android的能耗优化策略,提升整体的电量效率。
通过完善功耗分析和监控,飞书确保在维持功能和服务性能的同时,有效地降低不必要的电量消耗。这些措施帮助他们建立了更为精细化的能耗治理方案。
分析 Android 耗电原理后,飞书是这样做耗电治理
飞书耗电治理策略深入解析
飞书在进行耗电治理的专项优化时,深入分析了Android系统的耗电原理,并分享了其耗电治理的规划。以下内容将从Android耗电统计原理、模块功率、便携电视源码模块耗时、耗电计算以及Android的耗电优化策略等多个方面进行详细阐述。
Android耗电统计原理
Android系统通过模块功率×模块耗时的公式进行耗电统计。由于电流仪不适用于正常状态下的手机硬件,所以系统使用模块功率与模块耗时的乘积进行估算。尽管这种方式并非完全精确,但仍能大致反映各应用电量消耗的大小。
模块功率
模块功率在framework的power_profile.xml文件中由厂商提供,文件中规定了每个模块的功耗。以一加9的测试机为例,power_profile文件显示了各种模块的功耗情况。模块功耗的红外报警源码详细说明可以在谷歌提供的文档中查阅。
模块耗时
BatteryStatsService调用BatteryStats对象统计模块耗时。BatteryStats的构造函数初始化各个模块的Timer,用于统计耗时,并将数据存储在batterystats.bin文件中。不同模块如Wifi、音频和前台活动等,通过Timer进行时长统计,并根据UID决定是否计入统计数据,系统据此计算应用耗电。
耗电计算
根据每个模块的耗时和功耗,计算出各个模块的耗电量。这一过程主要在BatteryStatsHelper类中完成。在Setting应用中调用BatteryStatsHelper的refreshStats()函数来统计应用耗电详情,其中processappUsage和processMiscUsage分别用于计算应用和杂项(如WIFI、通话)的耗电。
Android耗电优化策略
Doze模式是一种系统级的耗电优化策略,包括Deep Doze和Light Doze两种模式。Deep Doze在手机息屏且静止分钟后启用,限制系统和非白名单应用的活动。Light Doze允许在息屏移动状态下进入,限制条件较Deep Doze宽松。
Doze模式实现原理
Doze模式的实现基于DeviceIdleController类。从ACTIVE状态进入INACTIVE状态的入口方法是becomeInactiveIfAppropriateLocked。随后,根据不同的模式(Deep Doze或Light Doze)进入不同的状态,如STATE_IDLE或STATE_IDLE_MAINTENANCE。进入状态后,系统会限制应用活动并定期提供解除限制的窗口期。
Doze模式优化策略
在Doze模式下,系统限制充电状态改变、屏幕息屏等操作,并在特定条件下启用Doze模式。Deep Doze限制系统和非白名单应用的活动,而Light Doze限制更加宽松。两者均提供白名单,允许特定应用在Doze模式下保持活动。
Standby模式
Standby模式针对单个应用进行耗电优化,根据应用最近使用时间与频率将其分组。不同组别下,对应用中的Jobs、Alarms和Network的使用限制程度不同。
电池历史分析
Android提供了Battery Historian工具进行电量使用的分析。通过Battery Historian图表,可以直观了解Doze模式下应用行为变化,如BLE扫描、GPS活动减少以及CPU、wakelock等频率降低的情况。此外,Battery Historian还能获取应用的耗电量详情。
飞书耗电治理
飞书的耗电治理方案侧重于监控完善与耗电管理,包括模块治理和状态治理。模块治理涵盖CPU、GPU、网络、GPS、音频、相机、视频等关键领域。状态治理针对前台与后台应用状态进行优化。为了更有效地进行治理,飞书完善了功耗分析和监控体系,包括CPU消耗监控、GPU与Display监控、网络监控、GPS监控、音频、相机、视频监控以及整体和场景电量消耗监控。