Периодическая задача GcmNetworkManager не запускается на некоторых устройствах
Я использую GcmNetworkManager
запускать периодические задачи синхронизации для отправки данных на мой сервер. Однако после доставки приложения я заметил, что в некоторых телефонах периодическая задача никогда не вызывается. Я уже отлаживал приложение некоторых из этих телефонов и не вижу ничего необычного, нет никаких ошибок или журналов, когда я планирую задачу, но они просто никогда не вызываются.
У большинства моих пользователей есть телефоны Infinix.
Любые идеи о том, что может быть причиной этого?
Вот код, в котором я планирую задачу:
Task task = new PeriodicTask.Builder()
.setService(mClazz)
.setPeriod(TimeUnit.MILLISECONDS.toSeconds(period))
.setFlex(TimeUnit.MILLISECONDS.toSeconds(period / 5))
.setTag(TAG_SYNC)
.setUpdateCurrent(true)
.setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
.build();
mGcmNetworkManager.schedule(task);
1 ответ
При использовании класса GcmNetworkManager,
Чтобы получить уведомление от планировщика о том, что задача готова к выполнению, ваше клиентское приложение должно реализовать
GcmTaskService
и фильтр на действиеSERVICE_ACTION_EXECUTE_TASK
,
Аналогично, на основе GcmTaskService ваша реализация должна вызывать super.onStartCommand()
иначе ваша задача не будет запущена правильно.
В дополнение к этому, решение, данное в этом посте SO - GCM Network Manager - Периодическая задача без запуска, также может помочь.
Удачного кодирования!