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