我搜索了一下,但对使用GCM的wakelock的真正功能有一个疑问。
唤醒锁是否阻止设备进入休眠模式,从而防止网络层关闭--这样它就可以首先从网络层接收GCM消息
或者当GCM被启用并工作时(通过清单权限,正确编码的GCM代码等),它将有一个网络连接到Google for GCM up,并且唤醒锁只需要从UI或应用程序级别打开屏幕,以便您可以在收到它后执行其他操作(与用户交互等)。
或以上任何一项/部分(请详细说明:)
谢谢geremy
发布于 2013-08-12 16:21:34
根据我的说法,你需要获取WAKE_LOCK来启动GCM Service,然后释放它,因为你的CPU在启动服务之前不应该休眠。
屏幕关闭后,CPU将在一段时间内进入睡眠模式。当你的设备处于休眠模式时,你的线程将被挂起。
如果你获得唤醒锁而不释放它,它肯定会消耗大量的电池。
您可以在设备处于空闲模式时接收GCM消息。
当消息到达时,取决于您的代码是否唤醒设备并显示通知。
您还可以通过使用标志delay_while_idle来延迟消息,直到设备脱离空闲状态。
您可以通过注册BroadcastReceiver来处理消息
请参考以下内容的问题和答案:
WAKE_LOCK
https://stackoverflow.com/questions/18094027
复制相似问题