zoukankan      html  css  js  c++  java
  • Android平台上长连接的实现

    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、实现闹钟的按小时、天、周等形式的定时循环提醒功能。

  • 相关阅读:
    什么是反射、javassist和asm(java动态编程)
    commons-codec
    commons-httpcomponents
    Servlet
    commons-compress(apache压缩工具包)
    java.io类
    JAVA的Class类
    Linux 命令行
    maven编译或者打包web项目显示“软件包 javax.servlet.http 不存在"
    有时候eclipse 导入maven项目 启动的时候回出现这样一个问题
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3753138.html
Copyright © 2011-2022 走看看