移动互联网长连接

移动互联网应用现状

因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端。

为了解决数据同步的问题,在手机平台上,常用的方法有2种。一种是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个 TCP 长连接,当服务器有数据时,实时推送到客户端,也就是我们说的 Push。

从耗费的电量、流量和数据送达的及时性来说,Push 都会有明显的优势,但 Push 的实现和维护成本相对较高。在移动无线网络下维护长连接,相对也有一些技术上的难度。本文试图给大家介绍一下我们极光推送在 Android 平台上是如何维护长连接。

移动无线网络的特点

因为 IP v4 的 IP 量有限,运营商分配给手机终端的 IP 是运营商内网的 IP,手机要连接 Internet,就需要通过运营商的网关做一个网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关需要维护一个外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器通讯。

图片源自 cisco.com.

NAT 功能由图中的 GGSN 模块实现。

大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰 NAT 表中的对应项,造成链路中断。

Android 平台上长连接的实现

为了不让 NAT 表失效,我们需要定时的发心跳,以刷新 NAT 表项,避免被淘汰。

Android 上定时运行任务常用的方法有2种,一种方法用 Timer,另一种是AlarmManager。

Timer

Android 的 Timer 类可以用来计划需要循环执行的任务,Timer 的问题是它需要用 WakeLock 让 CPU 保持唤醒状态,这样会大量消耗手机电量,大大减短手机待机时间。这种方式不能满足我们的需求。

AlarmManager

AlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的时间到达时,通过中断唤醒 CPU。

这意味着,如果我们用 AlarmManager 来定时执行任务,CPU 可以正常的休眠,只有在需要运行任务时醒来一段很短的时间。极光推送的 Android SDK 就是基于这种技术实现的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中的RIL(Radio Interface Layer)是用于与基带处理器(Baseband Processor)通信的接口层。移动网络连接流程是通过RIL实现的。 1. 初始化RIL:Android启动时,会加载RIL库并初始化RIL实例。这将建立与基带处理器的通信连接,并准备与基带处理器进行交互。 2. 搜索和注册网络:RIL会发送命令给基带处理器,请求搜索可用的移动网络。基带处理器将会扫描可用的基站,并将结果返回给RIL。然后,RIL会向基带处理器发送注册请求,以加入选定的网络。 3. 连接网络:一旦成功注册到某个网络,RIL会与基带处理器协商网络连接参数,如网络类型(2G、3G、4G)、频段和带宽等。然后,RIL会发送请求给基带处理器以建立物理连接。 4. IP配置:当物理连接建立后,RIL会触发移动网络的IP配置过程。RIL会发送请求给基带处理器以获取IP地址,并完成其他网络配置,如域名解析和MTU设置等。 5. 数据传输:一旦网络连接成功建立,RIL可以通过基带处理器来传输数据。RIL会在应用请求建立数据连接时,向基带处理器发送相应的指令,以激活或释放数据通道。同时,RIL也会负责错误处理和重试机制,以确保数据传输的可靠性和稳定性。 总结:Android中的RIL是移动网络连接的关键组件,通过与基带处理器的通信,实现了搜索和注册网络、建立物理连接、IP配置和数据传输等一系列操作。它为Android应用提供了稳定的移动数据连接,使用户可以顺畅地上网、发送和接收数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值