WorkManager вызывает метод doWork () более одного раза, когда устройство заблокировано - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь выполнить фоновую синхронизацию, которая запускается каждые 15 минут. Ниже приведена инициализация WorkManager для моей синхронизации:

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

Но когда мое устройство заблокировано, по некоторым причинам эта синхронизация происходит дважды, пока устройство не разблокируется. Как только устройство разблокировано и приложение запускается даже тогда, эта синхронизация запускается дважды, но со следующей синхронизации она работает нормально.

Используемое устройство - TC25 Zebra, работающее на Nougat

Зависимость, используемая в моем файле app.gradle:

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

Может кто-нибудь предложитьКаков наилучший способ избежать повторяющихся звонков.

1 Ответ

0 голосов
/ 17 октября 2019

Вам необходимо правильно обработать обратный вызов onStopped и совместно остановить свою работу. В противном случае вы обязательно увидите несколько экземпляров вашего Worker, работающего одновременно.

...