onRunTask никогда не вызывается

Я использую GcmTaskService для отправки данных в фоновом режиме, в большинстве случаев это работает хорошо, хотя в последнее время я получил одну жалобу от клиента, что данные не отправляются с устройства. Я принес устройство, и я заметил, что onRunTask моего GcmTaskService никогда не вызывается на этом конкретном устройстве.

Вот как я запускаю службу:

GcmNetworkManager gcmNetworkManager = GcmNetworkManager.getInstance(FarmWorkApplication.context);
        Class<FarmWorkSyncOutService> gcmTaskService = FarmWorkSyncOutService.class;
        String name = gcmTaskService.getName();
        gcmNetworkManager.cancelTask(name, gcmTaskService);
        OneoffTask task = new OneoffTask.Builder()
                .setService(gcmTaskService)
                .setTag(name)
                .setExecutionWindow(0L, maxDelay)
                .setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
                .build();
        gcmNetworkManager.schedule(task);

Это определение сервиса в манифесте:

<service android:name=".FarmWorkSyncOutService"
        android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
        android:exported="true">
        <intent-filter>
            <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/>
        </intent-filter>
    </service>

Устройство подключено к Интернету через WIFI и очень хорошо работает в Интернете.

Эта строка:

gcmNetworkManager.cancelTask(name, gcmTaskService);

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

Я попытался принудительно остановить GooglePlayServices и удалить его данные, это не помогло, что еще я могу сделать, чтобы отладить это? any1 есть идеи, почему это может произойти?

1 ответ

Решение

Это была ошибка режима энергосбережения. как только я отключил его, устройство начало синхронизироваться. Интересно, было ли это разумно, чтобы Сервисы вообще никогда не работали в фоновом режиме...

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