[WorkManager在设备锁定时多次调用doWork()方法

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

我正在尝试执行每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"

任何人都可以提出避免重复通话的最佳方法是什么。

java android android-workmanager background-service
1个回答
0
投票

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

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