Я обнаружил странное поведение менеджера работ (альфа-12), что он не выполняет задание после того, как он был помещен в очередь.Код для постановки в очередь ниже:
fun enqueue(phoneNumber: String?,priorityId: String? = null): ListenableFuture<WorkInfo> {
return WorkManager.getInstance().run {
val work = OneTimeWorkRequestBuilder<ContentDownloaderWork>()
.addTag(TIMESTAMP)
.setInputData(workDataOf(PHONE to phoneNumber, PRIORITY_ID to priorityId))
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 1, TimeUnit.SECONDS)
.setConstraints(Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
.build()
beginUniqueWork(TIMESTAMP + priorityId.orEmpty(), ExistingWorkPolicy.APPEND, work).enqueue()
getWorkInfoById(work.id)
}
}
Я ставлю эту работу в очередь каждый раз при запуске приложения.И то, что я делаю, убивает мое приложение в середине рабочего процесса, который загружает файлы с сервера.Оно успешно перезапускается каждый раз, когда я снова открываю свое приложение, но в течение ограниченного числа раз.
Кажется, что у него есть какая-то очередь, которая заполняется и не позволяет ставить в очередь больше заданий.Когда я проверяю все доступные вакансии по тегу, это показывает, что некоторые отменены, а некоторые успешны, но когда я пытаюсь поставить в очередь новую работу, она ничего не делает.
Так это ошибка в workmanager или я что-то не так делаю?