有没有理由继续使用IntentService来处理GCM消息?

Era*_*ran 7 android broadcastreceiver push-notification intentservice google-cloud-messaging

如您所知,最近Google更改了他们的GCM文档,他们声称IntentService不再需要处理到达的GCM消息.所有的处理都可以在BroadcastReceiver.

在试图弄清楚是否有任何理由继续使用时IntentService,我发现了这句话:

WakefulBroadcastReceiver将处理GCM消息的工作传递给的服务(通常是IntentService),同时确保设备不会在此过程中重新进入休眠状态.包含IntentService是可选的 - 您可以选择在常规的BroadcastReceiver中处理您的消息,但实际上,大多数应用程序将使用IntentService.

为什么大多数应用会使用IntentService?是否存在直接处理GCM消息的BroadcastReceiver情况不起作用?

Com*_*are 10

为什么大多数应用都使用IntentService?

因为很可能你在响应消息时所做的事情将花费超过1-2毫秒,这意味着你想要从主应用程序线程中完成这项工作.响应广播的常见模式是将作品委托给IntentService.

因此,如果您回应GCM消息的工作涉及:

  • 磁盘I/O.
  • 进一步的网络I/O(例如,从Web服务检索其他数据)
  • 实质计算(例如图像处理)

您可能希望使用a IntentService来执行该工作.