Периодический 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());

Помимо отмены задачи или удаления приложения, есть ли другая причина, по которой задача может быть отменена?

0 ответов

Другие вопросы по тегам