我不太确定如何在GCM Client documentation中解释这句话:
android.permission.WAKE_LOCK权限,以便应用程序可以在收到消息时使处理器不会休眠。可选 - 仅在应用程序希望防止设备进入休眠状态时使用。
如果在将工作转换为服务时未保留唤醒锁定,则有效地允许设备在工作完成之前返回休眠状态。最终结果是应用程序可能无法完成处理GCM消息,直到将来某个任意点,这不是您想要的。
和
不要求使用WakefulBroadcastReceiver。如果您有一个相对简单的应用程序并不需要服务,您可以在常规的BroadcastReceiver中拦截GCM消息并在那里进行处理。
我不太确定我的应用程序是否需要召唤唤醒锁(或者如果它需要服务)。 推送通知部分对应用程序非常重要,不应该延迟超过几分钟。在接收所有数据之前,BroadcastReceiver是否有可能被暂停?
答案 0 :(得分:5)
在收到所有数据之前,BroadcastReceiver是否有可能被暂停?
没有。在下载完整的4K或更少的有效负载并且可供您使用之前,您将无法获得控制权。
但是,在主应用程序线程上调用了onReceive()
,因此如果您的工作需要超过一毫秒左右,那么您应该使用WakefulBroadcastReceiver
和IntentService
来完成该工作。或者,如果您愿意,请使用my WakefulIntentService
和常规BroadcastReceiver
。