使用JobScheduler
可以构建具有某些约束的JobInfo
,例如“仅在充电时”和/或“仅在空闲时”和/或“仅在连接到未计量时”(例如WiFi) )网络“。
是否可以在运行作业时指定对的约束,例如“不在9.15am到10.15am之间”?所以你可以将它与“仅使用WiFi”相结合,这样如果WiFi在上午9点30分开启,那么所有约束都不能满足,并且等到10点15分才能运行。
通过一次性工作,builder.setMinimumLatency()
和builder.setOverrideDeadline()
似乎可以在某种程度上实现这一点,但对于使用builder.setPeriodic()
建立的定期工作又是如此(不可能在与其他人合并)?
答案 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
}
}