Android亮屏Job的功耗优化方案
摘要:
Job运行时会带来持锁的现象,目前灭屏放电Job的锁托管已经有doze和绿盟标准监管,但是亮屏时仍旧存在过长的持锁现象,故为了优化功耗和不影响用户体验下,新增亮屏放电下如果满足冻结和已运行过一次Job,则进行job限制,当非冻结时恢复的策略
1.现象:
(gms_scheduler长时间持锁)经常到晚上就只剩20%不到
2.友商调研:
新增对比友商的亮屏现象测试用例,预期是一样的。
【理论分析:亮屏下本身就有亮屏锁,CPU多个job锁对功耗影响有限。且亮屏中job还没执行完,灭屏继续持锁,如果强制终止JOB可能带来兼容性问题】
可行性策略:如果满足冻结和已运行过一次Job,则进行job限制,当非冻结时恢复。
备注:友商没有强制中止正在运行job的策略,目前主要还是灭屏托管策略为主。我们可以新增后台托管,即新增亮屏托管
3.功耗与Framework讨论的方案
<问题原因>:Job功耗Feature加强,新增亮屏的管控
<修改方案>:如果满足冻结和已运行过一次Job黑名单应用,则进行job限制,当非冻结时恢复
<测试建议>:重点亮屏放电场景com.microsoft.office.outlook、cn.ninebot.ninebot、com.android.vending、com.google.android.gms应用Job管控,亮屏放电场景至少30分钟即可,观察日志是否存在新增Job管控行为。即提供AP日志即可
<有无依赖>:无
4.测试结果验收
有对黑名单应用进行亮屏Job管控