注意:这不是重复,请仔细阅读问题
每次设备充电时,我都要做一份工作。在WIFI上。每次满足这些条件时,此作业必须最多运行一次。 这意味着如果我让手机充电过夜,那么工作就不应该重演。 只有当我拔下并重新插入作业时才允许再次执行。当我关闭和打开wifi时也是如此。
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
.setRequiresCharging(true)
//.setPeriodic(TimeUnit.SECONDS.toMillis(10))
.setPersisted(true)
作业调度程序提供了类似setPeriodic的方法,但是每隔X个时间就会运行我的作业。不是我想要的。 这项工作并不重要,我不需要在满足条件后立即执行它,并且我也很好,它有时根本不执行(意味着它可以在条件满足时不运行)在短时间内)
是否可以使用作业调度程序实现此目的?关于此的文档非常恐慌。
答案 0 :(得分:3)
如果您没有使用setPeriodic
,则只有在设置了其他约束时,您的作业才会运行一次。但是,您的要求意味着您需要在离开这些条件时安排新工作 - JobScheduler
不提供该API,Android也不提供任何可以与Android 8.0's Background Execution Limits一起使用的API(与连续运行前台服务的例外情况。)