【发布时间】:2014-11-30 00:37:43
【问题描述】:
我正在制作一个使用作业调度程序 API 的应用程序。 我想定期运行服务,并在设备充电时运行。这是代码。
JobInfo.Builder builder = new JobInfo.Builder(kJobId++, mServiceComponent);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
builder.setPeriodic(3000);
builder.setRequiresCharging(true);
mTestService.scheduleJob(builder.build());
现在,当我运行它并拔下设备时,该服务在 3 秒后仍然运行。设置 setRequiresCharging 没有任何效果。
当我注释掉 builder.setPeriodic(3000) 时,它工作得非常好。我不确定我哪里出错了。
【问题讨论】:
-
也许作业调度程序没有像您那样结合这些条件?喜欢 OR 而不是 AND。或者,也许他们忘记了这样的角落。文档不清楚这些条件的行为。
-
如果你使用 builder.setMinimumLatency(5000) 和 builder.setOverrideDeadline(60000),它会考虑条件(我用 wifi 条件测试),所以也许 setPeriodic 方法有什么特别之处可以告诉它忽略约束。
标签: android android-5.0-lollipop android-jobscheduler