Периодический GCMTaskService отменяется
Я столкнулся со странной проблемой, которую, возможно, кто-то может осветить. У меня есть два GCMTaskServices, которые запускаются периодически. Один загружает данные из базы данных sqlite, а затем отправляет их в наш бэкэнд. Другой загружает набор "правил" и обновляет другую таблицу в этой базе данных sqlite.
Они работают без проблем при обычном использовании и тестировании с помощью средств отладки в режиме ожидания, которые они активируют снова в течение периода обслуживания. Однако случайно услуги отменяются. Проверяя dumpsys, они перестают появляться под списком Pending. Еще более странно, что другой сервис, который мы запускаем для сбора информации о местоположении, кажется, работает без проблем или отменяется.
Тестирование проводилось на Nexus 5x с Android Nougat.
GcmNetworkManager mGcmNetworkManager = GcmNetworkManager.getInstance(mContext);
PeriodicTask.Builder task = new PeriodicTask.Builder()
.setTag("Context_Rules")
.setUpdateCurrent(true)
.setPersisted(true)
.setPeriod(unit.toSeconds(timeInSeconds))
.setFlex(unit.toSeconds(timeInSecondsFlex))
.setService(ContextRulesService.class);
mGcmNetworkManager.schedule(task.build());
-
GcmNetworkManager mGcmNetworkManager = GcmNetworkManager.getInstance(mContext);
PeriodicTask.Builder task = new PeriodicTask.Builder()
.setExtras(bundle)
.setTag("Context_Uploading")
.setUpdateCurrent(true)
.setPersisted(true)
.setRequiredNetwork(PeriodicTask.NETWORK_STATE_CONNECTED)
.setPeriod(unit.toSeconds(timeInSeconds))
.setFlex(unit.toSeconds(timeInSecondsFlex))
.setService(ContextUploadingService.class);
mGcmNetworkManager.schedule(task.build());
Помимо отмены задачи или удаления приложения, есть ли другая причина, по которой задача может быть отменена?