如何使用 JobScheduler 为 Android 定期作业指定初始延迟?

Cés*_*rca 7 java jobs android kotlin android-jobscheduler

我想创建一个具有特定时间和给定周期的正在运行的作业。例如,我想在每个月的第二天安排一个作业,它应该每个月运行。

查看JobInfo.Builder 文档,我还没有找到设置初始延迟的方法。

关于如何实现这一目标的任何想法?

这是以正确的周期运行但不以我想要的初始延迟运行的代码:

fun build(application: Application, periodicity: Days, startDay: Days) {
    val serviceComponent = ComponentName(application, GenerateDebtJobService::class.java)
    val builder = JobInfo.Builder(1, serviceComponent)
        .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
        .setPeriodic(TimeUnit.DAYS.toMillis(periodicity.days.toLong()))

    (application.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler).schedule(builder.build())
Run Code Online (Sandbox Code Playgroud)

Ron*_*___ 1

您不能对定期作业应用初始延迟。目前应该可以使用一次性作业作为初始延迟,然后以周期性间隔安排新的周期性作业。