Android 安卓:安卓处于睡眠模式时监听数据包

Android 安卓:安卓处于睡眠模式时监听数据包,android,tcp,cpu,sleep,Android,Tcp,Cpu,Sleep,如前一个问题的答案所述,CDMA和GSM无线电保持开启,即使在安卓设备上CPU处于休眠状态。 我的问题是 当接到电话时,是什么唤醒了CPU/手机 当通过与服务器的活动TCP连接接收数据时,即使在手机进入睡眠模式后,是否有类似的机制来唤醒我的应用程序 您可能希望研究向设备发送推送通知(如果您不特别需要TCP) 查看谷歌提供的(免费)安卓云到设备消息(C2DM)服务(http://code.google.com/android/c2dm/) 设置起来需要做一点工作,并且仅在2.2+上受支持,但实际上

如前一个问题的答案所述,CDMA和GSM无线电保持开启,即使在安卓设备上CPU处于休眠状态。 我的问题是

  • 当接到电话时,是什么唤醒了CPU/手机
  • 当通过与服务器的活动TCP连接接收数据时,即使在手机进入睡眠模式后,是否有类似的机制来唤醒我的应用程序

  • 您可能希望研究向设备发送推送通知(如果您不特别需要TCP)

    查看谷歌提供的(免费)安卓云到设备消息(C2DM)服务(http://code.google.com/android/c2dm/)


    设置起来需要做一点工作,并且仅在2.2+上受支持,但实际上简化了客户机/服务器体系结构。

    当CPU处于休眠状态时,无法接收数据

    CPU需要每隔一段时间唤醒一次,以查看是否有新数据。在检查新数据的代码中,如果有新数据,您可以保持清醒,然后离开并进行处理

    您肯定想了解BroadcastReceiver和android警报。基本上,你可以告诉Android每5分钟或任何时间向你发送一次警报,即使它正在睡觉。当你的广播接收器收到安卓系统的警报时,它会唤醒CPU,并保持清醒足够长的时间来检查你是否有新数据,或者你正在尝试做的任何事情。如果你有新的数据,你可以告诉CPU保持清醒,然后你可以去处理你的新数据


    这是一本书。当然,Android开发者文档也很有帮助

    感谢您抽出时间回复。“CPU需要偶尔唤醒一次,以查看是否有新数据。”如何查看是否有新数据?“我查看了意向列表,但没有任何可用的信息表明已收到数据包数据。@HeshanPerera ignore sleeping。当你知道手机处于唤醒状态时,无论你会写什么代码,你都会在你的接收器中写同样的代码。然后闹钟叫醒了接收器,接收器试图获取数据,如果它在那里,如果它不在那里,接收器就会回到睡眠状态。我明白你的意思。问题是,Android文档并没有提到广播接收器可以用于监听数据包的特定情况的意图。你会意识到这样的意图吗?RRC和基带处理器怎么样?我也在研究C2DM。。唯一的缺点是,该设备需要登录到谷歌帐户。无论如何,据我所知,C2DM也使用TCP协议运行。。。是吗?是的,在引擎盖下,它使用保持活动的数据包来保持与谷歌C2DM服务器的连接。根据我的经验,当用户改变连接模式时(edge->wifi->3g),它在维护连接方面做得相当好