【发布时间】:2014-03-20 19:48:07
【问题描述】:
我不太清楚如何解释GCM Client documentation 中的这句话:
android.permission.WAKE_LOCK 权限,以便应用程序可以在收到消息时阻止处理器休眠。可选 - 仅在应用想要让设备不进入睡眠状态时使用。
.
如果您在将工作转换为服务时没有保持唤醒锁定,则实际上是在让设备在工作完成之前重新进入睡眠状态。最终结果是应用程序可能要到将来某个任意时间点才能完成对 GCM 消息的处理,这不是您想要的。
和
使用 WakefulBroadcastReceiver 不是必需的。如果您有一个不需要服务的相对简单的应用程序,您可以在常规 BroadcastReceiver 中拦截 GCM 消息并在那里进行处理。
我不太确定我的应用是否需要保持唤醒锁(或者它是否需要服务)。 推送通知部分对应用程序来说非常重要,它不应延迟超过几分钟。 BroadcastReceiver 是否有可能在接收到所有数据之前被挂起?
【问题讨论】:
-
GcmReceiver仅在 Google Play Services v8.4.0 (com.google.android.gms:play-services-gcm:8.4.0) 中没有唤醒锁定权限(如 @RobMeeuwisse 所述)的情况下开始工作。在 v8.4.0 之前,在没有唤醒锁定权限的情况下使用GcmReceiver会发生崩溃。在没有唤醒锁权限的v8.4.0中,出现警告:“缺少唤醒锁权限,服务启动可能会延迟”
标签: android google-cloud-messaging wakelock