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系统提供了AlarmManager类来管理闹钟定时提醒任务。通过AlarmManager实现定时提醒及定时循环提醒。那么,AlarmManager类可以应用到以下场景:
1、定时循环启动组件(Component,如Activity、BroadcastReceiver),这样能替代在后台启动Service进行定时提醒任务
2、实现闹钟的按小时、天、周等形式的定时循环提醒功能。
相关文章
- 09-01基于NIO的长连接的实现已开放到github
- 09-01android实现点击短链接进入应用 并获得整个连接的内容
- 09-01[转] iOS应用中通过设置VOIP模式实现休眠状态下socket的长连接
- 09-01iOS应用中通过设置VOIP模式实现休眠状态下socket的长连接
- 09-01如何实现android和服务器长连接
- 09-01Android 心跳包心跳连接 如何实现android和服务器长连接呢?推送消息的原理
- 09-01http怎么实现长连接的?
- 09-01基于ASP.NET的comet简单实现 http长连接,IAsyncResult
- 09-01Android 监听 Android中监听系统网络连接打开或者关闭的实现代码
- 09-01Android杂谈--通过DDMS实现电脑与Android设备(如手机,平板)的网络连接、截图