#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. Если это нормально, попробуйте использовать прослушиваемого работника для проверки выполнения задачи, чтобы отправить работника в спящий режим до следующей итерации, чтобы он мог прекратить повторную попытку вашей логики вызова