Android JobScheduler setRequiresDeviceIdle

时间:2016-06-02 17:48:16

标签: android android-jobscheduler

JobInfo.Builder中的方法“setRequireDeviceIdle”究竟是如何工作的?根据我在Android文档(https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setRequiresDeviceIdle(boolean))中所阐述的内容,它应该保证只有在没有与设备交互的情况下才会启动作业。

我的经历与众不同:

private void scheduleRestartJob(){
    ComponentName mServiceComponent = new ComponentName(this, RelaunchAppJobService.class);

    JobInfo.Builder builder = new JobInfo.Builder(1002, mServiceComponent);
    builder.setRequiresDeviceIdle(true);
    builder.setPersisted(true);
    builder.setOverrideDeadline(10000);
    mJobScheduler.schedule(builder.build());
}

如果我退出我的应用程序并开始使用另一个应用程序,那么无论我是否处于活动状态都无关紧要,因为作业将始终在10秒后运行。

1 个答案:

答案 0 :(得分:0)

  

如果我退出我的应用程序并开始使用其他应用程序,那么无论我是否活动都没关系,因为作业将始终在10秒后运行。

这是因为这一行:

builder.setOverrideDeadline(10000);

引用the documentation

  

即使未满足其他要求,此工作也将在此截止日期下运行

(强调补充)

因此,您的工作将在设备空闲或10秒后运行,以先到者为准。很有可能,10秒钟将首先消失。