4

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 秒后运行。

4

1 回答 1

1

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

那是因为这条线:

builder.setOverrideDeadline(10000);

引用文档

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

(重点补充)

因此,您的作业将在设备空闲或从现在起 10 秒后运行,以先到者为准。很可能,这 10 秒将首先过去。

于 2016-06-02T17:50:55.853 回答