Android JobScheduler:有时间限制的工作

时间:2016-09-03 19:14:13

标签: android android-jobscheduler

使用JobScheduler可以构建具有某些约束的JobInfo,例如“仅在充电时”和/或“仅在空闲时”和/或“仅在连接到未计量时”(例如WiFi) )网络“。

是否可以在运行作业时指定对的约束,例如“不在9.15am到10.15am之间”?所以你可以将它与“仅使用WiFi”相结合,这样如果WiFi在上午9点30分开启,那么所有约束都不能满足,并且等到10点15分才能运行。

通过一次性工作,builder.setMinimumLatency()builder.setOverrideDeadline()似乎可以在某种程度上实现这一点,但对于使用builder.setPeriodic()建立的定期工作又是如此(不可能在与其他人合并)?

2 个答案:

答案 0 :(得分:0)

  

是否可以在作业运行时指定约束,例如“不在9.15am到10.15am之间”?

不,抱歉。

答案 1 :(得分:0)

您可以做这样的事情,不知道它是否遵循良好实践,但是您的工作将完成;)

void timeCheck() {
    Date date = Calendar.getInstance().getTime();
    int hour = Integer.parseInt(new SimpleDateFormat("HH").format(date));
    int minute = Integer.parseInt(new SimpleDateFormat("mm").format(date));
    int remainingHours = 10 - hour;
    int remainingMinutes = 15 - minute;
    long timeRemainingInMinutes = remainingHours * 60 + remainingMinutes;
    if (timeRemainingInMinutes >= -60 && timeRemainingInMinutes < 0) {
         yourTask();
    } else {
         // startTimer and on remaining time complete do your task 
    }
}