> For the complete documentation index, see [llms.txt](https://philm.gitbook.io/philm-ios-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://philm.gitbook.io/philm-ios-wiki/mei-zhou-yue-du/qian-xi-yi-dong-feng-wo-wang-luo-de-te-dian-ji-qi-sheng-dian-fang-an.md).

# 浅析移动蜂窝网络的特点及其省电方案

蜂窝网络的架构类似于我们常见的蜂窝，是由一个个基站组成的蜂窝，理想状态中我们的蜂窝网络应该是下面这个样子的。当然，现实生活中网络资源分布并没有这么的均匀。![](/files/-LAdZUiluZY6BHfvbW3M)Wi-Fi 是一种无限局域网技术，Wi-Fi 信号需要有线网来提供，比如我们家里常用的宽带上网，就是将有线信号转换成 Wi-Fi 信号。![](/files/-LAdZUinHcgFAwGR6ASZ)

## 计费的差异性

我们平时使用的蜂窝网络一般都是按照流量来收费的，比如 10 元 30 M 流量套餐，但是 Wi-Fi 一般都是免费的，为什么会存在这种差异？

Wi-Fi 信号接入互联网需要依靠宽带等有线网络，而宽带这种网络我们已经支付了年费或者包月费用，规定时间内可以在接入测独享宽带资源，必然可以在这段时间内随便使用流量来上网。蜂窝网络是使用运营商的基站等通信设备来进行上网的，在上网过程中需要占用频谱等公共无线资源，而运营商通过一些基础建设提供无线资源来供用户使用，显然用户应该支付相关费用，同时大家都有体会，当多人在同一区域使用蜂窝网络的时候，网络明显就会变慢，这是因为无线资源不足导致。这种共享模式下，使用流量，也就是资源的消耗多少，来进行收费更加合理。

## 资源控制

无线资源是稀有且昂贵的，那么目前移动设备是如何来控制无线资源的呢？这就是下面要讲的 RRC （无线资源控制），RRC 不仅可以省无线资源，还可以为用户省电。

由于不是通信相关领域的开发人员，只阐述个大概意思，RRC 状态机的细节可以[参考这里](https://link.juejin.im?target=http%3A%2F%2Fwww.vccoo.com%2Fv%2F08a9fc)。RRC 会有相关的状态，我们可以简单的理解为空闲状态和活跃状态，在手机待机的时候就可以看成是在空闲状态，在这个状态会关闭无线信号，当需要数据传输的时候再调整 RRC 的状态为活跃，状态的切换过程需要一定的延迟，这个延迟是我们移动网络数据传输延迟的一部分，是用户可以感知（这个延迟整体分为 RRC 状态切换、DNS 解析、TCP 握手、 SSL 握手、网络传输等）。下图来源于网络，可以一定程度上辅助理解（数据不一定准确）。![](/files/-LAdZUjjA5BOv2er0CPZ)除了延迟，还要关心移动设备的电量问题。在从空闲状态切换到活跃状态后，活跃状态会维持一段时间，如果没有数据传输会再次进入空闲状态，在活跃状态我们的设备相比是比较耗费电量的。所以对于每次网络请求，我们都要考虑它的合理性，如果频繁切换 RRC 状态，那么活跃状态就会消耗更多的电量。

而对于 Wi-Fi 不存在多状态切换，Wi-Fi 会处于始终开启状态，但是由于 Wi-Fi 的自身机制，在进行大量数据传输的时候反而比移动蜂窝网络更加省电。

## 理论上如何省电呢？

基于刚才的讨论，可以总结出一些理论上的省电方法：

* 避免无效的轮训，轮训会使手机不断的被唤醒，使设备处于高消耗状态
* 如果存在长连接，设置合理的心跳时间，并且不应该无限次重连
* 减少网络数据获取的频次，可以从合并网络请求、预拉取缓存等方面入手
* 对于大数据使用 Wi-Fi 来传输，在稳定性、延迟、电量、流量方面都更加合适

## 参考资料

* [移动网络简介与RRC](https://link.juejin.im/?target=http%3A%2F%2Fwww.cnblogs.com%2Fsyfwhu%2Fp%2F5459110.html)
* [Android性能优化-Battery篇](https://link.juejin.im/?target=https%3A%2F%2Fmy.oschina.net%2Fu%2F3026396%2Fblog%2F823206)
* [移动网络下的性能优化之省电篇](https://link.juejin.im/?target=https%3A%2F%2Fblog.wilddog.com%2F%3Fp%3D948)
* [RRC状态是如何影响手机耗电的？](https://link.juejin.im/?target=http%3A%2F%2Fwww.vccoo.com%2Fv%2F08a9fc)
* [微信终端跨平台组件 Mars 在移动网络的探索和实践](https://link.juejin.im/?target=https%3A%2F%2Fmp.weixin.qq.com%2Fs%2FMezVOuSqy2vuMWiqRGALwA)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://philm.gitbook.io/philm-ios-wiki/mei-zhou-yue-du/qian-xi-yi-dong-feng-wo-wang-luo-de-te-dian-ji-qi-sheng-dian-fang-an.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
