移动互联网长连接
2013-04-29 20:50
197 查看
移动互联网应用现状
因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 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 就是基于这种技术实现的。
相关文章推荐
- 移动互联网迅猛发展,连接人与服务成为重要趋势
- 移动互联网长连接
- 移动互联网长连接方案实例
- 移动互联网长连接方案实例(转)
- 移动互联网长连接方案实例
- 移动互联网长连接方案实例
- 移动互联网消息推送原理:长连接+心跳机制(MQTT协议)
- 互联网大会后记:移动互联网将加速站长转型
- 马化腾:拥抱移动互联网 开放共赢
- “互联网女神”带你看移动互联网时代新商业图景
- 移动技术开创互联网奇迹
- 解读摩根士丹利互联网报告:移动,社交,广告
- 互联网推送服务原理:长连接+心跳机制(MQTT协议)
- c# 判断网络是连接到互联网
- 移动互联网袭来 如何成为一个android开发者
- 移动互联网时代 浏览器不可能干掉App
- 场景应用:移动互联网的广告变革
- 移动互联网硅谷视角:运营商控制模式已过时
- 移动互联网终端的touch事件,touchstart, touchend, touchmove
- 互联网与移动互联网仍是本世纪最大创业机会