我知道该方法setRequiresDeviceIdle(boolean requiresDeviceIdle)
使作业在设备处于空闲模式时运行。
我想要的是相反的,我希望在设备不处于空闲模式(屏幕打开并且用户正在使用电话)时运行作业,我知道这setRequiresDeviceIdle(false)
不会完成这项工作,因为说“ false
”意味着它不是必需的,因此它会在空闲和空闲时运行。
我知道该方法setRequiresDeviceIdle(boolean requiresDeviceIdle)
使作业在设备处于空闲模式时运行。
我想要的是相反的,我希望在设备不处于空闲模式(屏幕打开并且用户正在使用电话)时运行作业,我知道这setRequiresDeviceIdle(false)
不会完成这项工作,因为说“ false
”意味着它不是必需的,因此它会在空闲和空闲时运行。
这是不可能的JobScheduler
。如果您希望基于屏幕开启触发行为,您必须不断运行(很可能作为前台服务)并以编程方式注册BroadcastReceiver
监听ACTION_SCREEN_ON
.
显然,这是内存密集型的,并且对于整体系统健康来说是一个可怕的想法,这就是为什么它不受支持JobScheduler
(更不用说已经存在的显着内存压力,因为它是从Android 7.0 的轻度打瞌睡ACTION_SCREEN_ON
中出来的条件之一) .