我正在尝试执行每 15 分钟运行一次的后台同步。以下是同步发生时的 WorkManager 初始化:
PeriodicWorkRequest syncRequest = new PeriodicWorkRequest.Builder(MyWorkerClass.class, 15, TimeUnit.MINUTES).addTag("sync").build();
WorkManager.getInstance().enqueueUniquePeriodicWork("sync", ExistingPeriodicWorkPolicy.REPLACE, syncRequest);
但是当我的设备被锁定时,由于某些原因,这种同步会发生两次,直到设备解锁为止。一旦设备解锁并启动应用程序,此同步就会触发两次,但从下一次同步开始,它就可以正常工作。
我使用的设备是在 Nougat 上运行的 TC25 Zebra
我的 app.gradle 文件中使用的依赖项:
实现“android.arch.work:work-runtime:1.0.1”
任何人都可以建议避免重复调用的最佳方法吗?
最佳答案
您需要正确处理onStopped
回调并配合停止您的工作。否则,您肯定会看到 Worker
的多个实例同时运行。
关于java - 当设备锁定时,WorkManager 多次调用 doWork() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58413052/