我使用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知道为什么会发生这种事吗?
发布于 2017-12-17 08:51:18
这是节电模式的错。一旦我禁用它,设备就开始同步。想知道他们是否聪明到让服务永远不在后台运行.
https://stackoverflow.com/questions/47853159
复制相似问题