- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
智游推送推送技术原理
智游推送技术原理为什么使用推送:现在的大多数移动端应用都有实时得到消息的能力,简单来说,有发送消息的主动权和接受消息的被动权。例如:微信,QQ,天气预报等等,对于用户体验和好处不用多言。移动应用互联网特点:因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统?PC?上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端。为了解决数据同步的问题,在手机平台上,常用的方法有2种。一种是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个?TCP?长连接,当服务器有数据时,实时推送到客户端,也就是我们说的?Push。从耗费的电量、流量和数据送达的及时性来说,Push?都会有明显的优势,但?Push?的实现和维护成本相对较高。在移动无线网络下维护长连接,相对也有一些技术上的难度。本文试图给大家介绍一下我在?Android?平台上是如何维护长连接。智游推送如何实现高效稳定且低消耗的推送功能移动无线网络的特点:因为?IP?v4?的?IP?量有限,运营商分配给手机终端的?IP?是运营商内网的?IP,手机要连接?Internet,就需要通过运营商的网关做一个网络地址转换(Network?Address?Translation,NAT)。简单的说运营商的网关需要维护一个外网?IP、端口到内网?IP、端口的对应关系,以确保内网的手机可以跟?Internet?的服务器通讯。NAT?功能由图中的?GGSN?模块实现。大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰?NAT?表中的对应项,造成链路中断。Push在Android平台上的实现既然我们知道我们移动端要和Internet进行通信,必须通过运营商的网关,所以,为了不让NAT映射表失效,我们需要定时向Internet发送数据,来保持NAT映射表的活性。这时候就需要用到定时器,在Android上定时器通常有以下两种:java.util.Timerandroid.App.AlarmManager分析:Timer:可以按照计划或者时间周期来执行相关的任务。但是Timer需要用WakeLock来让CPU保持唤醒状态,才能保证任务的执行,这样子会消耗大量电量;当CPU处于休眠的时候,就不能唤醒执行任务,所以应用于移动端明显是不合适AlarmManager:AlarmManager类是属于android系统封装好来管理RTC模块的管理类。这里就涉及到RTC模块,要更好地了解两者的区别,就要明白两者真正的区别。 RTC(Real-?Time?Clock)实时闹钟在一个嵌入式系统中,通常采用RTC?来提供可靠的系统时间,包括时分秒和年月日等;而且要求在系统处于关机状态下它也能够正常工作(通常采用后备电池供电),它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32.768KHz?晶体和电阻电容等。(如果对这方面感兴趣,可以自己查阅相关资料,这里就说个大概)好了,回来正题。所以,AlarmManager又称全局定时闹钟。这意味着,当我用使用AlarmManager来定时执行任务,CPU可以正常地休眠,只有在执行任务是,才唤醒CPU,这个过程是很短时间的。在推送中我们使用AlarmManager来实现心跳的功能,使其真正的实现长连接,且以最低的消耗。
文档评论(0)