当屏幕开启(设备不空闲)时设置作业调度程序?

问题描述:

我知道当设备处于空闲模式时,方法setRequiresDeviceIdle(boolean requiresDeviceIdle)使作业运行。当屏幕开启(设备不空闲)时设置作业调度程序?

我想要的是相反的,我希望在设备不处于空闲模式时(屏幕打开并且用户正在使用手机)运行作业,并且我知道setRequiresDeviceIdle(false)不能完成这项工作,因为说“false”意味着它不是必需的,所以它会在闲置和不闲时运行。

+0

我不认为'JobScheduler'有一个选项。 – CommonsWare

+1

你究竟想要做什么? – ianhanniballake

+0

@ianhanniballake我必须制作一个应用程序,它可以在屏幕打开的同时从不同的传感器收集值并将它们存储在一个文件中,并且当存在互联网连接时(屏幕处于开启状态的第二个条件),文件将被发送到服务器。所有这些都必须在backgorund中完成。 – student93

这不可能通过JobScheduler。如果您希望在屏幕打开的基础上触发行为,则必须持续运行(最有可能为foreground service)并以编程方式注册BroadcastReceiver,监听ACTION_SCREEN_ON

显然,这是占用大量内存,这就是为什么它没有被JobScheduler(不提显著内存压力时ACTION_SCREEN_ON已经存在,由于它是冒出来的Android 7.0's light doze的条件之一支持系统的整体健康一个可怕的想法)。

+0

谢谢,所以我必须考虑一种不同的方法,因为这似乎是电池耗尽。 – student93