小编Ass*_*say的帖子

workmanager 多次重复 doWork()

这个问题已经以不同的形式被问过很多次了,但我没有得到正确的答案,并且想知道它是否可能不是一个 android bug。

设置 WorkManager 后,会随机调用 doWork(),有时会快速连续调用多达 10 次以上。

  • 它在我的 MainApplication 中仅被调用一次(*参见下文)
  • 如果它被意外调用,我会尝试清除并重新启动它
  • 我已卸载并重新安装该应用程序
  • 我在调用 WorkManager 之前清除所有实例
  • 我尝试使用独特的标签创建它

预期行为是每 10-15 分钟调用一次

请参阅下面的详细信息:使用 Android studio Bumblebee 2021.1.1 Patch 2 在 LG K22 上实现

梯度实现:

implementation 'androidx.work:work-runtime-ktx:2.7.1'
Run Code Online (Sandbox Code Playgroud)

主要活动代码:

    WorkManager.getInstance(this).cancelAllWorkByTag("scanDevices")
    val myMonitorWorkerRequest = PeriodicWorkRequest.Builder(myMonitorWorker::class.java,
        15, TimeUnit.MINUTES,5, TimeUnit.MINUTES).build()

    WorkManager.getInstance(this)
        .enqueueUniquePeriodicWork(
            "scanDevices",
            ExistingPeriodicWorkPolicy.KEEP,
            myMonitorWorkerRequest)
Run Code Online (Sandbox Code Playgroud)
  • 注意:ExistingPeriodicWorkPolicy.REPLACE 不会更改此处的行为

原始工人阶级:

  override fun doWork(): Result {
    try{
        runNotificationService()
        return Result.success()
    }
    catch (e:Exception){
        return Result.failure()
    }
}
Run Code Online (Sandbox Code Playgroud)

当前工人阶级:

  override fun doWork(): Result {
    try{
        val timeNow = System.currentTimeMillis()
        if(timeNow …
Run Code Online (Sandbox Code Playgroud)

android android-workmanager

5
推荐指数
1
解决办法
2102
查看次数

标签 统计

android ×1

android-workmanager ×1