使用WakefulBroadcastReceiver进行GCM服务

时间:2015-07-14 03:18:26

标签: broadcastreceiver google-cloud-messaging intentservice

在我的理解中,GCMBaseIntentService完全提供了从GCM监听消息的方法,以及处理长时间运行的任务(使用我们的演示服务器注册注册ID)。 真的吗? 如果是真的, - 为什么我们不使用普通的BroadcastReceiver来监听来自GCM的消息? - 在某些示例中,WakefulBroadcastReceiver经常用于启动IntentSevice,它也从GCM获取消息并处理它们,为什么我们使用它? 请帮我理解这个! 任何想法将不胜感激!

1 个答案:

答案 0 :(得分:0)

WakefulBroadcastReceiver用于GCM,以确保设备在应用处理消息之前不会进入休眠状态。一般流程是:

  1. GCM库获取消息,向您的应用发送广播,并在广播接收器运行时保持唤醒锁定。
  2. 您的WakefulBroadcastReceiver收到消息意图,然后调用startWakefulService需要一段唤醒锁,以确保设备在服务启动之前不会进入休眠状态。
  3. 服务启动并处理消息,如果它计划进行一些现在需要处理的处理,它也应该采用自己的唤醒锁,并且需要一些时间
  4. 如果您使用普通的BroadcastReceiver并且不进行唤醒锁定,则设备可能会在2到3之间进入休眠状态,这意味着该消息可能会延迟。