@uzolenta

Как получить ID задачи в WorkManager?

Здравствуйте.
1) Как получить ID задачи сразу после запуска?
Перепробовал всё, что написано, но до меня, видать, просто не доходит.
Если, например, сразу после
WorkManager.getInstance(this).enqueueUniquePeriodicWork("TagWorker",
            ExistingPeriodicWorkPolicy.KEEP,myWorkRequest)

Вызвать:
val workInfo = WorkManager.getInstance(this).getWorkInfoByIdLiveData(myWorkRequest.id)
        println(workInfo.value?.id)

То возвращает Null.

в Activity при нажатии на кнопку:

val constraints = Constraints.Builder()
            .setRequiredNetworkType(NetworkType.CONNECTED)
            .build()
        val myWorkRequest = PeriodicWorkRequest.Builder(Worker::class.java, 15, TimeUnit.MINUTES)
            .setConstraints(constraints)
            .addTag("WorkerTag")
            .setInputData(data.build())
            .build()
        WorkManager.getInstance(this).enqueueUniquePeriodicWork("TagWorker",
            ExistingPeriodicWorkPolicy.KEEP,myWorkRequest)


Сам Worker:

class Worker(context: Context, workerParameter: WorkerParameters): Worker(context, workerParameter){
 override fun doWork(): Result {
            Log.d("doWork", "doWokr: Success function called")
 return Result.success()
}
}


2) Должны ли удаляться с внутренней базы WorkManager строчки о завершенных задачах?

Если пользоваться
WorkManager.getInstance(this).cancelAllWorkByTag("tag")
            WorkManager.getInstance(this).cancelAllWork()
  • Вопрос задан
  • 14 просмотров
Пригласить эксперта
Ответы на вопрос 1
@uzolenta Автор вопроса
Можно получить при нажатии на кнопку:
WorkManager.getInstance(this).getWorkInfoByIdLiveData(myWorkRequest.id).observe(this,
            Observer{                
                println("it.id: ${it!!.id}")
            })


Но как сразу при первом запуске получить ID из class Worker, вернуть с Result.success?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы