我正在尝试每隔一小时定期运行一次api调用。我知道定期请求的最短时间间隔是15分钟,我肯定已将其保留得更多。
下面是我的代码以运行定期请求
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)
在workmanager
类的doWork
方法中,我只是调用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()
}
但是它永远不会流逝。我看不到本地通知。我等了一整天。没有简单的方法可以调试它,因此我决定将我的定期工作请求转换为一次工作请求,并在UI
中添加了一个按钮,并且在单击侦听器的按钮上添加了以下代码]]
WorkManager.getInstance(this).enqueue(request)
现在,可以正确调用api,并且在
api
成功时将显示本地通知。我不明白为什么我的定期请求没有运行
我正在尝试每隔一小时定期运行一次api调用。我知道定期请求的最短时间间隔是15分钟,我肯定已将其保留得更多。下面是我要运行的代码...
所以我终于想通了