onRunTask 永远不会被调用

onRunTask never gets called

我使用 GcmTaskService 在后台发送数据,在大多数情况下它运行良好,尽管最近我收到一位客户的投诉,说数据没有从设备发送出去。我带来了设备,我注意到我的 GcmTaskService 的 onRunTask 从未在此特定设备上被调用。

这是我启动服务的方式:

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 知道为什么会发生这种情况吗?

这是省电模式的问题。一旦我禁用它,设备就会开始同步。想知道他们让服务永远不会 运行 在后台运行是否明智...