我搜索了一下,但对 GCM 唤醒锁的真正功能有疑问。
唤醒锁是否会阻止设备进入睡眠模式,从而阻止网络层关闭——因此它可以首先从网络层接收 GCM 消息
或者当 GCM 启用并正常工作时(通过清单权限、正确编码的 GCM 代码等),它将与 Google 建立网络连接以启动 GCM,并且只需要从 UI 或应用程序级别唤醒锁即可将屏幕返回这样你就可以在收到它后做其他事情(与用户交互等)。
或者没有/以上的一些(请详细说明:)
谢谢杰瑞米
我搜索了一下,但对 GCM 唤醒锁的真正功能有疑问。
唤醒锁是否会阻止设备进入睡眠模式,从而阻止网络层关闭——因此它可以首先从网络层接收 GCM 消息
或者当 GCM 启用并正常工作时(通过清单权限、正确编码的 GCM 代码等),它将与 Google 建立网络连接以启动 GCM,并且只需要从 UI 或应用程序级别唤醒锁即可将屏幕返回这样你就可以在收到它后做其他事情(与用户交互等)。
或者没有/以上的一些(请详细说明:)
谢谢杰瑞米
根据我的说法,您需要获取WAKE_LOCK
启动GCM Service
然后释放它,因为您的 CPU 在启动服务之前不应该休眠。
屏幕关闭后,CPU 将在一段时间后进入睡眠模式。当您的设备处于睡眠模式时,您的线程将被暂停。
如果你获得了唤醒锁并且不释放它,它肯定会消耗大量的电池。
您可以在设备处于空闲模式时接收GCM消息。
消息到达时取决于您的代码是否唤醒设备并显示通知。
您还可以使用标志延迟消息直到设备退出空闲状态 delay_while_idle
。
您可以通过注册BroadcastReceiver来处理消息
请参考 SO 上的问题和答案: