Android--Alarm机制

Posted _taoGe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()方法;

以上是关于Android--Alarm机制的主要内容,如果未能解决你的问题,请参考以下文章

你知道的Go切片扩容机制可能是错的

Android设置取消系统闹钟

异常和TCP通讯

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段

SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端Eureka 服务信息Eureka 发现管理Eureka 安全配置Eureka-HA(高可用) 机制Eur(代码片段

如何向 ViewPager 提供许多片段并避免错误代码?