Рабочий Android DoWork() попадает в цикл for

#android #worker

Вопрос:

Я вижу со стороны сервера, что Android вызывает несколько /тестовых запросов API — похоже на бесконечный цикл for. Этот API определен только в классе TestWorker:

 class TestWorker(
    context: Context,
    workerParams: WorkerParameters
) : Worker(context, workerParams) {

    override fun doWork(): Result {
        callApiRequest()
        return Result.success()
    }

    private fun callApiRequest() {
        XUseCase.execute()
            .backgroundToMainThread() 
            .subscribe(
                { ->
                    ..
                },
                {
                    ..
                }
            )
    }    

    companion object {
        const val REPEAT_INTERVAL_IN_HOURS = 3L
    }
}

private fun initTestWorker() {
    val constraints = Constraints.Builder()
        .setRequiredNetworkType(NetworkType.CONNECTED)
        .build()

    val workerRequest = PeriodicWorkRequestBuilder<TestWorker>(TestWorker.REPEAT_INTERVAL_IN_HOURS, TimeUnit.HOURS)
        .setConstraints(constraints)
        .build()

    WorkManager
        .getInstance(this)
        .enqueueUniquePeriodicWork("", ExistingPeriodicWorkPolicy.KEEP, workerRequest)
}
 

initTestWorker() вызывается в методе MyApp onCreate (). Я не уверен, как, но, возможно, кто-то испытывал подобное поведение, с самого начала я не могу воспроизвести проблему. Есть ли опыт использования цикла Worker?

Комментарии:

1. Требуется ли использовать периодические рабочие запросы? Вы могли бы использовать одноразовый запрос, если хотите, чтобы он был выполнен один раз?

2. Его нужно выполнять каждые x часов.

3. Пожалуйста, один раз проверьте и подтвердите политику повторных попыток вашего клиента HTTP — запроса.

4. Если это нормально, попробуйте использовать прослушиваемого работника для проверки выполнения задачи, чтобы отправить работника в спящий режим до следующей итерации, чтобы он мог прекратить повторную попытку вашей логики вызова