android - 了解 Android "Radio State Machine"以获得更好的电池生命周期

标签 android networking mobile battery power-management

在 Android 文档页面上 Optimizing Downloads for Efficient Network Access ,要点是“唤醒 radio 不好”、“批量传输”或“搭载 GCM”。那篇文章为好奇的人留下了一些内部工作原理:

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

  2. Standby 表示:“待机:最低能量状态,在此期间没有 Activity 或不需要网络连接。”这是否意味着网络模块已完全关闭?如果是这样,即使设备处于 sleep 模式,GCM 又如何工作?如果不是,与全功率模式相比,它大约使用多少电池?

  3. “每次您创建新的网络连接时, radio 都会转换到全功率状态。”这如何 mock 长期存在的 TCP 连接?如果我创建一个 TCP 连接,然后一直接收 数据包,那么我将不会创建新的网络连接或发送任何数据。这是否允许网络模块进入待机模式?

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

最佳答案

@minhaz 的链接让我开始了对理解蜂窝的漫长探索 网络层方面的网络。所以这里是:

这个问题原来主要是3G组网怎么样 实现的。回答中心问题:“那么 GCM 如何接收 处于‘空闲状态’时的消息”可以回答上述所有问题。

简答

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

长答案

原来状态转移是由网络控制的 运营商,而不是手机本身。来自 Resource Radio Control (RRC); Protocol specification :

8.6.3.3 Generic state transition rules depending on received information elements

The IE (Information Element) "RRC State Indicator" indicates the state the UE (User Equipment) shall enter. The UE shall enter the state indicated by the IE "RRC State Indicator...

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

2.2.3.3 Radio Resource Control States

... Idle state -- devices not actively communicating with the network are in this state. Here, they periodically listen to the paging channel for incoming voice or video calls and SMS messages.

来自 LTE in Bullets :

23.1 The RRC connection establishment procedure is always initiated by the UE but can be triggered by either the UE or the network. ... The network triggers the RRC connection establishment procedure by sending a Paging message. ...

所以我们有它。现在很明显可以看出所有这些是如何联系在一起的 一起。回答原始问题:

  1. Connection 表示 RRC 连接。由于 RRC 连接是 第 3 层,所有(正常)类型的网络 Activity ,包括 TCP 和 UDP, 将创建 RRC 连接(即“唤醒 radio ”)。

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

  3. 正如在 Stack Overflow 和 TCP 上的各个地方提到的 连接保存在内存中,并不关心 底层已经完成了 RRC 重新连接过程。如果 TCP 连接空闲 RRC 连接可以释放(即 UE 可以 变得闲置)。如果它持续接收数据,网络将不会指示 UE 释放 RRC 连接,这样它就不会空闲。

  4. RRC belongs to UMTS WCDMA这是 底层 3G 很可能 iPhone 也有类似的操作。


注意事项:

  • 我链接到的资源混合了 3G 和 4G。我怀疑4G是一个 渐进式改进,以便主要概念可以在它们之间混合。

用于更深入理解的资源转储(即上述摘要的来源):

关于android - 了解 Android "Radio State Machine"以获得更好的电池生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141050/

相关文章:

flash - HTML5 MP3 播放器,带 Flash 后备功能,实际上可以在黑莓网页上运行

android - fragment 存储和重用 : Multiple Child fragments with TabView

c++ - 如何使用 C++ 更改 Windows ncpa.cpl 中显示的网络名称?

linux - 是否可以同时在 iptables 中接受和排队数据包

python - python中的端口转发以允许套接字连接

用于移动设备的 html5 全屏 API

android - 如何在 SQLite android 中手动执行检查点?

java - 如何以编程方式获取Android中已安装的游戏列表

Android 俯仰和滚动问题

android - 是否可以通过 wifi 在 2 个 android 设备之间交换消息?