Я пытаюсь периодически звонить через API каждый час. Я знаю, что минимальный интервал времени для запроса periodi c составляет 15 минут, я определенно сохранил его больше.
Ниже приведен мой код для запуска periodi c request
val data = Data.Builder().putString(
"covid_country",
viewModel?.getSavedCountry()
).build()
val request =
PeriodicWorkRequest.Builder(CovidWorker::class.java, 1, TimeUnit.HOURS)
.setInputData(data)
.setConstraints(
Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
)
.build()
WorkManager.getInstance(this)
.enqueueUniquePeriodicWork("simplified", ExistingPeriodicWorkPolicy.KEEP, request)
В doWork
методе класса workmanager
я просто вызываю API и отправляю локальное уведомление, если успешно.
override fun doWork(): Result {
val covidCountry = inputData.getString("covid_country")
Log.i("savedd112", covidCountry)
Coroutines.main {
val response =
CovidApi().getCovidCases("india")
val count = response?.get(response.size - 1)?.Cases ?: 0
Log.i("hereeached", "mark")
displayNotification("Cases in india", "$count")
}
return Result.retry()
}
Но он никогда не запускается. Я не вижу своего локального уведомления. Я ждал этого целый день. Нет простого способа отладки, поэтому я решил преобразовать свой периодический рабочий запрос c в одноразовый рабочий запрос и добавил кнопку в моем UI
, а на кнопку прослушивателя щелчка я вызвал следующий код
WorkManager.getInstance(this).enqueue(request)
Теперь API вызывается правильно, и локальное уведомление отображается при успешном выполнении api
. Я не понимаю, почему мой periodi c запрос не выполняется