设备进入深度睡眠时的Android Job Scheduler行为

时间:2018-07-23 07:55:00

标签: android android-jobscheduler

我目前正在使用一个使用android Job Scheduler来按一定间隔调用api的android应用(每4小时说一次)。 假设我的设备没有充电,并且没有任何活动在进行,因此它会在一段时间后进入睡眠状态(例如,在上一次api调用之后1个小时)。 现在,由于我不停地进行一些活动,因此我的设备在5小时后唤醒。调度程序是否会立即调用api(自上次调用以来已超过4小时)?还是会等待接下来的3个小时来运行作业? (*在这种情况下,我尚未获得唤醒锁,因此设备将进入睡眠状态。)

1 个答案:

答案 0 :(得分:2)

我认为“深度睡眠”是指打ze睡。当设备处于打mode模式时,您的JobServices将不会触发。定期工作不能准确。一项工作是准确的还是定期的。因此定期在执行间隔之间的维护窗口中触发。如果您以较高的频率在Lollipop +上运行作业,则可能会跳过某些时间段,因为该设备正在节省电池电量。

enter image description here

查看打do模式的限制:

  
      
  • 网络访问已暂停。
  •   
  • 系统忽略唤醒锁。
  •   
  • 标准AlarmManager警报(包括setExact()和setWindow())将推迟到下一个维护窗口。
  •   
  • 如果您需要设置在打ze睡时触发的警报,请使用setAndAllowWhileIdle()或setExactAndAllowWhileIdle()。
  •   
  • 通过setAlarmClock()设置的警报继续正常触发-在这些警报触发之前,系统立即退出Doze。
  •   
  • 系统不执行Wi-Fi扫描。
  •   
  • 系统不允许运行同步适配器。
  •   
  • 系统不允许JobScheduler运行。
  •   

但是您可以使用一些技巧使您的作业在计划后的特定时间/立即执行。