WorkManager定期请求未运行?

问题描述 投票:0回答:1

我正在尝试每隔一小时定期运行一次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分钟,我肯定已将其保留得更多。下面是我要运行的代码...

android kotlin android-workmanager
1个回答
0
投票

所以我终于想通了

© www.soinside.com 2019 - 2024. All rights reserved.