【问题标题】:How to schedule a job using JobScheduler only when device is not in doze (not even Maintenance window)?仅当设备未处于打盹状态(甚至不是维护窗口)时,如何使用 JobScheduler 安排作业?
【发布时间】:2017-02-24 14:05:38
【问题描述】:

JobInfo.Builder 有一种设置设备空闲状态的方法,但我对它到底想说什么感到困惑。

setRequiresDeviceIdle (boolean requiresDeviceIdle)

Specify that to run, the job needs the device to be in idle mode. This defaults to false.

Idle mode is a loose definition provided by the system, which means that the device is not in use,
and has not been in use for some time. As such, it is a good time to perform resource heavy jobs.
Bear in mind that battery usage will still be attributed to your application, and surfaced to the user in battery stats.

现在对布尔值的描述如下:

requiresDeviceIdle  boolean: Whether or not the device need be within an idle maintenance window.

我基本上需要在设备不打瞌睡时启动作业,最好甚至在维护窗口中也不要。这项工作的目的是从网络上下载东西。

将其设置为 false 是否会导致它在设备不在维护窗口中时运行? (实际深度睡眠状态IDLE和运行状态)

将其设置为 true 是否会导致它仅在维护窗口中运行而在其他情况下不运行?

【问题讨论】:

标签: android


【解决方案1】:

设置setRequiresDeviceIdle(true) 将在设备打盹的维护窗口中运行计划作业。

维护窗口是一段打盹(空闲状态),其中所有累积的作业都有机会运行一段特定的时间,然后设备再次进入打盹,然后在一段时间后维护窗口时间开始,并且循环将被重复。因此,当您将 true 设置为 setRequiresDeviceIdle() 时,您的作业将仅在这些维护窗口中执行。

因此,如果您希望您的作业随时运行(即使用户正在使用设备),请将 setRequiresDeviceIdle() 设置为 false

【讨论】:

  • 我希望它尤其是在设备处于活动状态时使用......并且仅在它处于活动状态时使用。
  • 但是在维护窗口中运行的作业也有什么问题?
  • 问题是如果我把该死的标志设置为真,它只会在维护窗口中运行,如果只在活动状态下为假......这就是为什么没有 mw。如果您有其他选择,请提出建议
  • 如果仅在活动状态下设置为 false ——我认为这是不正确的。如果设置为 false,它将尽可能运行。表示无论是活动还是空闲,它都会运行
  • 嗯,所以我想保持网络需要标志和空闲标志为假应该确保它仅在有互联网时工作并且设备不一定空闲,即尽可能。
猜你喜欢
  • 2018-01-20
  • 2017-08-18
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多