android - 屏幕打开时设置作业调度程序(设备未闲置)?

标签 android android-5.0-lollipop android-background android-jobscheduler android-job

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

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

最佳答案

这无法通过 JobScheduler 实现。如果您希望基于屏幕打开触发行为,您必须不断运行(很可能是 foreground service )并以编程方式注册 BroadcastReceiver 监听 ACTION_SCREEN_ON .

显然,这是内存密集型的,并且对整体系统健康来说是一个可怕的想法,这就是为什么 JobScheduler 不支持它的原因(更不用说 ACTION_SCREEN_ON 期间已经存在的显着内存压力因为它是出现 Android 7.0's light doze 的条件之一)。

关于android - 屏幕打开时设置作业调度程序(设备未闲置)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427315/

相关文章:

android - 如何更改android中最近应用列表显示的屏幕截图?

android - 缩放图像在背景可绘制中保持其纵横比

java - 安卓 : How to turn flashlight on/off programmly using Camera Source Builder?

android - 使用 Volley 的字符串请求带有不需要的 HTML

android - 带 fragment 的 RecyclerView

android - 禁用安卓内置麦克风

android - 如果子组件与其中一个父组件存在冲突,Dagger 不会抛出异常

java - 格式化 TextWatcher android

android - ListViewDraggingAnimation 在 Android 5 Lollipop 上损坏

android - 使用 ImageView 作为 Android 布局的背景