• Android--Alarm机制


    1、Alarm 能够实现 Android 中的定时任务,它与 Java 中的 Timer类的区别在于,Android 系统在休眠状态下时 Timer 类中的定时任务可能无法正常运行,而 Alarm 机制则不存在这种情况,它具有唤醒CPU 的功能;

    2、Alarm 的使用:

      1)Android 中通过 AlarmManager 来管理,它通过 Context 的 getSystemService() 方法来获取

    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

      2)调用 AlarmManager 的 set() 方法即可设置定时任务;

    long triggerAtTime = SystemClock.elapsedRealtime() + 10 * 1000;
    manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pendingIntent);

       set() 方法有三个参数:

        --第一个参数是一个整型参数,用于指定AlarmManager 的工作类型,有四种值可选,分别是ELAPSED_REALTIME、ELAPSED_REALTIME_WAKEUP、RTC 和RTC_WAKEUP。ELAPSED_REALTIME 表示让定时任务的触发时间从系统开机开始算起,但不会唤醒CPU;ELAPSED_REALTIME_WAKEUP 同样表示让定时任务的触发时间从系统开机开始算起,但会唤醒CPU;RTC 表示让定时任务的触发时间从1970 年1月1 日0 点开始算起,但不会唤醒CPU;RTC_WAKEUP 同样表示让定时任务的触发时间从1970 年1 月1 日0 点开始算起,但会唤醒CPU;使用SystemClock.elapsedRealtime()方法可以获取到系统开机至今所经历时间的毫秒数,使用System.currentTimeMillis()方法可以获取到1970 年1 月1 日0 点至今所经历时间的毫秒数;

        --第二个参数是定时任务触发的时间,以毫秒为单位;

        --第三个参数是一个PendingIntent,表示时间到时将要进行的操作;

      --3)set() 方法有可能会产生时间延误的情况,如果要求Alarm 任务的执行时间必须准备无误,可以使用AlarmManager 的setExact()方法来替代set()方法;

  • 相关阅读:
    MySQL Unknown table engine 'FEDERATED''
    Meta http-equiv属性与HTTP头的Expires中(Cache-control)详解
    EChart 标题 title 样式,x轴、y轴坐标显示,调整图表位置等
    手机端个人信息模板
    <c:forEach>, <c:forTokens> 标签
    html select 可输入 可编辑
    js写评价的星星
    指数映射
    刚体转动的稳定性
    物理引擎中的刚体转动2
  • 原文地址:https://www.cnblogs.com/tengtao93/p/5285507.html
Copyright © 2020-2023  润新知