zoukankan      html  css  js  c++  java
  • 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()方法;

  • 相关阅读:
    Vue 下拉刷新及无限加载组件
    VUE常用问题hack修改
    CSS滤镜让图片模糊(毛玻璃效果)实例页面
    滑动删除
    拖动选择单元格并合并方法
    Windows7上开启ftp服务器功能
    js 向上滚屏
    理解Clip Path
    图标制作
    transition实现图片轮播
  • 原文地址:https://www.cnblogs.com/tengtao93/p/5285507.html
Copyright © 2011-2022 走看看