Периодическая задача 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 - Периодическая задача без запуска, также может помочь.

Удачного кодирования!

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