每次满足条件时,JobScheduler最多运行一次

时间:2017-09-19 03:57:49

标签: android

注意:这不是重复,请仔细阅读问题

每次设备充电时,我都要做一份工作。在WIFI上。每次满足这些条件时,此作业必须最多运行一次。 这意味着如果我让手机充电过夜,那么工作就不应该重演。 只有当我拔下并重新插入作业时才允许再次执行。当我关闭和打开wifi时也是如此。

    builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
            .setRequiresCharging(true)
            //.setPeriodic(TimeUnit.SECONDS.toMillis(10))
            .setPersisted(true)  

作业调度程序提供了类似setPeriodic的方法,但是每隔X个时间就会运行我的作业。不是我想要的。 这项工作并不重要,我不需要在满足条件后立即执行它,并且我也很好,它有时根本不执行(意味着它可以在条件满足时不运行)在短时间内)

是否可以使用作业调度程序实现此目的?关于此的文档非常恐慌。

1 个答案:

答案 0 :(得分:3)

如果您没有使用setPeriodic,则只有在设置了其他约束时,您的作业才会运行一次。但是,您的要求意味着您需要在离开这些条件时安排新工作 - JobScheduler不提供该API,Android也不提供任何可以与Android 8.0's Background Execution Limits一起使用的API(与连续运行前台服务的例外情况。)