具有WakefulBroadcastReceiver的GCM服务



在我的理解中,GCMBaseIntentService完全提供了从GCM侦听消息的方法,也处理长时间运行的任务(注册注册id与我们的演示服务器)。这是真的吗?如果这是真的,-为什么我们不使用普通的BroadcastReceiver来收听GCM的消息?-在一些例子中,WakefulBroadcastReceiver经常用于启动intentservice, intentservice也从GCM获取消息并处理它们,为什么我们使用这个?请帮助我理解这一点!

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

  1. GCM库获取消息,发送广播到你的应用程序,并在你的广播接收器运行时保持唤醒锁。
  2. 你的WakefulBroadcastReceiver接收到消息意图,然后调用startWakefulService需要一段时间的唤醒,以确保设备在服务启动之前不会进入睡眠状态。
  3. 服务启动并处理消息,如果它计划做一些需要现在发生的处理,并且需要一些时间,它也应该使用自己的唤醒锁

如果您使用普通的BroadcastReceiver并且不采取唤醒锁定,那么设备可能会在2到3之间进入睡眠状态,这意味着消息可能会出现延迟。

最新更新