Android WorkManager向JobScheduler添加太多作业

Android WorkManager向JobScheduler添加太多作业,android,android-jobscheduler,android-jetpack,android-workmanager,Android,Android Jobscheduler,Android Jetpack,Android Workmanager,我正在尝试使用WorkManager计划任务在特定时间运行。我使用的是beginUniqueWork,因为我只希望为特定ID(uniqueWorkName)一次安排一个任务。但是在多次调用enqueue后,在某个时候我得到以下错误: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs at android.os.Parcel.readException(Parcel.java

我正在尝试使用
WorkManager
计划任务在特定时间运行。我使用的是
beginUniqueWork
,因为我只希望为特定ID(uniqueWorkName)一次安排一个任务。但是在多次调用
enqueue
后,在某个时候我得到以下错误:

java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
    at android.os.Parcel.readException(Parcel.java:2012)
    at android.os.Parcel.readException(Parcel.java:1950)
    at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:180)
    at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:44)
    at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal(SystemJobScheduler.java:85)
    at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule(SystemJobScheduler.java:64)
    at androidx.work.impl.Schedulers.scheduleInternal(Schedulers.java:98)
    at androidx.work.impl.Schedulers.schedule(Schedulers.java:69)
    at androidx.work.impl.WorkManagerImpl.rescheduleEligibleWork(WorkManagerImpl.java:398)
    at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:66)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
    at java.lang.Thread.run(Thread.java:764)
当我在每次
排队
后使用以下代码段记录挂起作业的数量时,我注意到列表中为每个调用添加了3个新作业(而我预计总数将保持在1)

下面是我用来安排任务的代码:

val work = OneTimeWorkRequest.Builder(workerClass)
        .setInitialDelay(offset, TimeUnit.MILLISECONDS)
        .build()
WorkManager.getInstance()
        .beginUniqueWork(uniqueNameForTask, ExistingWorkPolicy.REPLACE, work)
        .enqueue()
这里有什么不对劲的地方吗?我错过了什么 根据,1.0.0-alpha07的修复程序之一是:

已完成执行的工作现在可以正确地取消其他调度程序中该工作的所有挂起副本。这导致超出JobScheduler作业限制

因此,升级到1.0.0-alpha07应该可以解决您的问题。

根据,1.0.0-alpha07的一个修复是:

已完成执行的工作现在可以正确地取消其他调度程序中该工作的所有挂起副本。这导致超出JobScheduler作业限制


因此,升级到1.0.0-alpha07应该可以解决您的问题。

您当前的工作版本是什么?是1.0.0-alpha01。升级到1.0.0-alpha07解决了您当前的工作版本是什么?是1.0.0-alpha01。升级到1.0.0-alpha07解决了这个问题
val work = OneTimeWorkRequest.Builder(workerClass)
        .setInitialDelay(offset, TimeUnit.MILLISECONDS)
        .build()
WorkManager.getInstance()
        .beginUniqueWork(uniqueNameForTask, ExistingWorkPolicy.REPLACE, work)
        .enqueue()