设备锁定后,WorkManager会多次调用doWork()方法

时间:2019-10-16 12:13:42

标签: java android android-workmanager background-service

我正在尝试执行每15分钟运行一次的后台同步。以下是我进行同步的WorkManager初始化:

PeriodicWorkRequest syncRequest = new PeriodicWorkRequest.Builder(MyWorkerClass.class, 15, TimeUnit.MINUTES).addTag("sync").build();
WorkManager.getInstance().enqueueUniquePeriodicWork("sync", ExistingPeriodicWorkPolicy.REPLACE, syncRequest);

但是,当我的设备被锁定时,由于某种原因,此同步会发生两次,直到设备被解锁。一旦设备解锁并启动应用程序,此同步就会触发两次,但是从下一次同步起就可以正常工作。

正在使用的设备是在牛轧糖上运行的TC25 Zebra

我的app.gradle文件中使用的依赖项:

implementation "android.arch.work:work-runtime:1.0.1"

谁能建议避免重复通话的最佳方法。

1 个答案:

答案 0 :(得分:0)

您需要正确处理onStopped回调并合作停止工作。否则,您肯定会看到Worker的多个实例同时运行。