GCM-App真的需要唤醒锁吗?

时间:2014-03-20 19:48:07

标签: android google-cloud-messaging wakelock

我不太确定如何在GCM Client documentation中解释这句话:

  

android.permission.WAKE_LOCK权限,以便应用程序可以在收到消息时使处理器不会休眠。可选 - 仅在应用程序希望防止设备进入休眠状态时使用。

  

如果在将工作转换为服务时未保留唤醒锁定,则有效地允许设备在工作完成之前返回休眠状态。最终结果是应用程序可能无法完成处理GCM消息,直到将来某个任意点,这不是您想要的。

  

不要求使用WakefulBroadcastReceiver。如果您有一个相对简单的应用程序并不需要服务,您可以在常规的BroadcastReceiver中拦截GCM消息并在那里进行处理。

我不太确定我的应用程序是否需要召唤唤醒锁(或者如果它需要服务)。 推送通知部分对应用程序非常重要,不应该延迟超过几分钟。在接收所有数据之前,BroadcastReceiver是否有可能被暂停?

1 个答案:

答案 0 :(得分:5)

  

在收到所有数据之前,BroadcastReceiver是否有可能被暂停?

没有。在下载完整的4K或更少的有效负载并且可供您使用之前,您将无法获得控制权。

但是,在主应用程序线程上调用了onReceive(),因此如果您的工作需要超过一毫秒左右,那么您应该使用WakefulBroadcastReceiverIntentService来完成该工作。或者,如果您愿意,请使用my WakefulIntentService和常规BroadcastReceiver