我正在尝试执行每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"
任何人都可以提出避免重复通话的最佳方法是什么。
您需要正确处理onStopped
回调并协同停止工作。否则,您肯定会看到Worker
的多个实例同时运行。