我目前正在处理一个使用Android作业调度程序的Android应用程序,以在一定时间间隔(比如每4小时)调用API。 假设我的设备没有充电并且没有任何活动正在进行,因此在最后一次API调用后经过一段时间后(比如1小时后),它就会进入睡眠状态。 现在,由于我故意进行了某些活动,我的设备在5个小时后唤醒。调度程序是否会立即调用API(因为距离上次调用已经超过4小时了)?还是会等待下一个3个小时才运行作业呢? (*在这种情况下,我没有获取唤醒锁,所以设备将进入睡眠状态。)
我目前正在处理一个使用Android作业调度程序的Android应用程序,以在一定时间间隔(比如每4小时)调用API。 假设我的设备没有充电并且没有任何活动正在进行,因此在最后一次API调用后经过一段时间后(比如1小时后),它就会进入睡眠状态。 现在,由于我故意进行了某些活动,我的设备在5个小时后唤醒。调度程序是否会立即调用API(因为距离上次调用已经超过4小时了)?还是会等待下一个3个小时才运行作业呢? (*在这种情况下,我没有获取唤醒锁,所以设备将进入睡眠状态。)
查看Doze模式的限制:
- 网络访问被暂停。
- 系统忽略唤醒锁。
- 标准AlarmManager警报(包括setExact()和setWindow())被推迟到下一个维护窗口。
- 如果需要设置在Doze中触发的警报,请使用setAndAllowWhileIdle()或setExactAndAllowWhileIdle()。
- 使用setAlarmClock()设置的警报会正常触发 - 系统在这些警报触发前不久退出Doze。
- 系统不执行Wi-Fi扫描。
- 系统不允许同步适配器运行。
- 系统不允许JobScheduler运行。
但是您可以使用一些技巧来使您的工作在特定时间/安排后立即执行。