了解Android“无线电状态机”以获得更好的电池寿命

时间:2013-10-02 15:45:18

标签: android networking mobile battery electronics

在Android文档页面Optimizing Downloads for Efficient Network Access上,要点是“唤醒收音机不好”,“批量转移”或“捎带GCM”。那篇文章为好奇留下了一些内在的工作原则:

  1. 它说:“每次创建新的网络连接时,无线电都会转换为全功率状态。” 连接在这里意味着什么?那是TCP连接吗?这是否意味着发送UDP数据包不会唤醒无线电?

  2. 待机中,它说:“待机:没有网络连接处于活动状态或需要的最小能量状态。”这是否意味着网络模块完全关闭?如果是这样,即使设备处于睡眠模式,GCM如何工作?如果没有,与全功率模式相比,大致使用了多少电池?

  3. “每次创建新的网络连接时,无线电都会转换为全功率状态。”这与长期存在的TCP连接有何关系?如果我创建TCP连接然后只是保持接收数据包,那么我将不会创建新的网络连接或发送任何数据。这是否允许网络模块进入待机模式?

  4. iPhone的工作方式几乎相同吗?

2 个答案:

答案 0 :(得分:17)

@ minhaz的链接让我开始了解细胞的长期探索 网络层面的网络化。所以这里:

这个问题主要是关于3G网络的方式 实现。回答这个核心问题:“那么GCM如何接受 处于“空闲状态”的消息可以回答上述所有问题。

简答

是的,在空闲模式中,无线电仍然可以接收有限的“控制信号”。基本上,网络运营商会要求设备切换能量状态 能够接收实际的有效载荷。他们用来做这件事的机制与你的方式类似 接听电话或短信。

长答案

事实证明,状态转换是由网络控制的 操作员,而不是手机本身。来自Resource Radio Control (RRC); Protocol specification

  

8.6.3.3通用状态转换规则取决于收到的信息元素

     

IE(信息元素)“RRC状态指示符”表示状态   UE(用户设备)应进入。 UE应进入该状态   由IE“RRC状态指示器......

表示

当RRC处于空闲模式时,网络运营商如何做到这一点? 从书3G, 4G and Beyond: Bringing Networks, Devices and the Web Together

  

2.2.3.3无线电资源控制状态

     

...空闲状态 - 没有主动与网络通信的设备是   在这种状态下。在这里,他们定期收听寻呼信道   用于传入语音或视频通话和短信。

来自LTE in Bullets

  

23.1 RRC连接建立过程始终由   UE可以由UE或网络触发。 ......   网络通过发送触发RRC连接建立过程   分页消息。 ...

所以我们拥有它。现在很明显看到所有这些并列 一起。回答原始问题:

  1. 连接表示RRC连接。由于RRC连接是 第3层,所有(正常)种网络活动,包括TCP和UDP, 将创建一个RRC连接(即“唤醒无线电”)。

  2. 由于收音机仍需要收听寻呼频道,因此不是 完全关闭。根据经验,它仍然使用能量作为实验 XMPP link 由@minhaz提供。结果它减少了2个数量级 能源消耗与其他州相比。

  3. 正如Stack Overflow上的各个地方所提到的那样,显然是TCP 连接在内存中维护,并不真正关心 底层已经过RRC重新连接过程。如果 TCP连接是空闲的,RRC连接可以被释放(即UE可以 变得闲着)。如果它一直接收数据,网络将不会指示 UE释放RRC连接,因此不会进入空闲状态。

  4. RRC belongs to UMTS WCDMA以来 基础3G可能也是iPhone的运作方式。


  5. 注意:

    • 我链接的资源混合了3G和4G。我怀疑4G是一个 增量改进因此主要概念可以在它们之间混合。

    资源转储以获得更深入的理解(即上述摘要的来源):

答案 1 :(得分:2)

我不是SOC专家,但在这里我通过阅读相同的文档理解。

It said "Every time you create a new network connection, the radio transitions to the full power state." What does connection mean here? Is that a TCP connection? Does that mean sending a UDP packet will not wake up the radio?

通过网络进行的任何类型的数据传输都会唤醒无线电,如果它是UDP或TCP 1字节或1 MB则无关紧要。

In Standby it said: "Standby: The minimal energy state during which no network connection is active or required." Does that mean the network module is completely shut off? If so how can GCM even work even when the device is in sleep mode? If not, roughly how much battery does it use compared to full power mode?

如果没有唤醒整个收音机,您仍然可以保持与无线塔的连接。我相信这个设计很久以前就已经用来节省移动电池了,它与Android无关。它可能只使用不同的芯片来完成这项工作,但我将为SOC专家留下这个答案。

"Every time you create a new network connection, the radio transitions to the full power state." How does that gibe with long lived TCP connections? If I create a TCP connection and then just keep receiving packets, then I won't be creating new network connections or sending out any data. Does that allow the network module to go to Standby mode?

用于打开TCP连接,您总是需要一定程度的握手,这将保持无线电发射器唤醒。 TCP是一种可靠的协议,意味着传输将在两端进行验证,以避免传输错误。并且,在我们的情况下,它意味着无论什么,系统将始终发送,通过网络接收的东西。 TCP保持活动也进行网络握手(keep_alive),这意味着如果没有数据传输仍然会保持发送器唤醒。