6

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

当试图弄清楚是否有任何充分的理由继续使用 时IntentService,我遇到了这句话

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

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

4

1 回答 1

9

为什么大多数应用程序会使用 IntentService?

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

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

  • 磁盘 I/O
  • 进一步的网络 I/O(例如,从您的 Web 服务中检索附加数据)
  • 大量计算(例如,图像处理)

您可能希望使用 anIntentService来执行该工作。

于 2013-08-24T00:17:17.613 回答