App使用Job定时器不准时的原因分析
摘要
Job的定时器属性本质取决于Alarm接口的调用:从源码看Job定时器属性是不精准的,故若App在灭屏且放电场景下使用job定时器接口都是不准时的
Job定时器接口 |
Alarm type |
Alarm window |
充电或亮屏场景 |
灭屏且放电场景 |
setMinimumLatency |
ELAPSED_REALTIME 非唤醒CPU类型,灭屏待机一般无法触发 |
WINDOW_HEURISTIC 非精准alarm |
准时或会因对齐策略延时一些时间 |
非准时甚至不触发job |
setOverrideDeadline |
ELAPSED_REALTIME_WAKEUP 唤醒CPU类型,灭屏待机可以触发 |
非准时job,延迟时间依赖alarm策略 |
||
备注:灭屏且放电精准定时方案推荐: 1.AlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,alarmTimeElapsed, |