Wakelock、深度睡眠和GCM

4

我稍微搜索了一下,关于GCM的wakelock的真正功能有一个问题。

wakelock是否防止设备进入睡眠模式,使网络层无法关闭--因此它可以首先从网络层接收GCM消息

或者当通过清单权限、正确编码的GCM代码等启用并工作时,它将始终具有到Google GCM的网络连接,wakelock仅需要在UI或应用程序级别上打开屏幕,以便您可以在接收后进行其他操作(与用户交互等)。

以上某些内容/没有(请详细说明 :)

谢谢 geremy

1个回答

0

根据我的经验,您需要获取WAKE_LOCK来启动GCM服务,然后释放它,因为在启动服务之前,您的CPU不应该休眠。

当您的屏幕关闭后,CPU将在一段时间后进入睡眠模式。当您的设备处于睡眠模式时,您的线程将被挂起。

如果您获取了唤醒锁并且没有释放它,那么它肯定会消耗大量电池电量。

您可以在设备处于空闲状态时接收GCM消息。

当消息到达时,取决于您的代码是否唤醒设备并显示通知。

您还可以使用标志delay_while_idle延迟消息,直到设备退出空闲状态。

您可以通过注册BroadcastReceiver来处理消息。

请参考SO上的问题和答案:

深度睡眠中的唤醒锁

电源管理

待机中的GCM

WAKE_LOCK


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接