具有定期请求的工作管理器多次调用

Bip*_*and 8 android kotlin android-workmanager

我正在使用工作经理进行定期任务.我要执行单个工作实例

我的代码如下

  val workManager = WorkManager.getInstance()
  val callDataRequest = PeriodicWorkRequest.Builder(MyLoggerWork::class.java,
                15, TimeUnit.MINUTES)
                .addTag(worker)
                .build()
   workManager.enqueueUniquePeriodicWork(worker, ExistingPeriodicWorkPolicy.KEEP, callDataRequest)
Run Code Online (Sandbox Code Playgroud)

我的工作人员记录如下

18/09/2018 03:18:19
18/09/2018 03:18:19
18/09/2018 03:18:19
18/09/2018 03:18:19

18/09/2018 03:37:18
18/09/2018 03:37:18
18/09/2018 03:37:18
18/09/2018 03:37:18
Run Code Online (Sandbox Code Playgroud)

这是我的MyLoggerWork类

public class MyLoggerWork: Worker(){


override fun doWork(): Result {
    addlog()
    return Worker.Result.SUCCESS
}

private fun addlog() {

    try {

        val directory = File(Environment.getExternalStorageDirectory().path + "/", "Jobs")
        if (!directory.exists()) {
            directory.mkdir()
        }
        val file = File(directory.path, "jobs_.txt")
        if (!file.exists() && directory.exists()) {
            file.createNewFile()
        }
        try {
            val text = SimpleDateFormat("dd/MM/yyyy hh:mm:ss").format(Date())
            val stream = FileOutputStream(file, true)
            stream.write("\r\n".toByteArray())
            stream.write(text.toByteArray())
            stream.close()
        } catch (e: Exception) {
            e.printStackTrace()
        }

    } catch (e: IOException) {
        e.printStackTrace()
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下依赖

 implementation 'android.arch.work:work-runtime:1.0.0-alpha08'
Run Code Online (Sandbox Code Playgroud)

为什么我的工作被召唤4次???

Rah*_*hul 1

您使用的是非常旧版本的 WorkManager。您应该切换到最新的稳定版本。您可以尝试使用1.0.1,或者更好的是,切换到2.0.1包含androidx依赖项。