android – 屏幕打开时设置作业调度程序(设备非空闲)?

我知道方法setRequiresDeviceIdle(boolean requiresDeviceIdle)使作业在设备处于空闲模式时运行.

我想要的是相反的,我希望工作在设备未处于空闲模式时运行(屏幕打开且用户正在使用手机)并且我知道setRequiresDeviceIdle(false)不能完成工作因为说“false”表示它不是必需的,所以当它处于空闲状态时它就会运行,而它不会运行.

最佳答案 这不可能通过JobScheduler实现.如果您希望基于屏幕打开的触发行为,您必须始终运行(很可能是
foreground service)并以编程方式注册侦听
ACTION_SCREEN_ON的BroadcastReceiver.

显然这是内存密集型和整体系统健康状况的一个可怕想法,这就是为什么JobScheduler不支持它(没有提到ACTION_SCREEN_ON期间已经存在的显着内存压力,因为它是Android 7.0’s light doze出来的条件之一).

点赞