简略 闹钟 实现 原理

简单 闹钟 实现 原理

参考 自文献  http://jakend.iteye.com/blog/1980842

简单 闹钟 原理 就是 利用 AlarmManager  设置一个时间, 时间到了  发出一个广播,接收到广播提示时间到了。

关键就是  拿到AlarmManager  对象 

         AlarmManager manager = (AlarmManager)getSystemService(ALARM_SERVICE);

 看下manager 的方法

简略 闹钟 实现 原理

简略 闹钟 实现 原理简略 闹钟 实现 原理

关键方法  就是  set 方法 设置 日期 

第一个 set 方法  中  long 值  triggerAtMillis 这个是触发时间 ,表示 到了这个时间 就会提示

第二个 set 方法中的参数  ong triggerAtMillis触发, long intervalMillis  间隔 ,表示 可以以 intervalMillis   这个周期 间隔 触发事件


type   这里 一共有四种类型 分别 如下

AlarmManager.RTC,硬件闹钟,不唤醒手机(也可能是其它设备)休眠;当手机休眠时不发射闹钟。
      AlarmManager.RTC_WAKEUP,硬件闹钟,当闹钟发躰时唤醒手机休眠;
       AlarmManager.ELAPSED_REALTIME,真实时间流逝闹钟,不唤醒手机休眠;当手机休眠时不发射闹钟。
       AlarmManager.ELAPSED_REALTIME_WAKEUP,真实时间流逝闹钟,当闹钟发躰时唤醒手机休眠;


       RTC闹钟和ELAPSED_REALTIME最大的差别就是前者可以通过修改手机时间触发闹钟事件,后者要通过真实时间的流逝,即使在休眠状态,时间也会被计算。


两个set  方法 还有一个公共参数 就是一个  PendingIntent  一个延期意图。

这样可以 很容易拿到 intent

  1. Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);  
  2. PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this0, intent, 0);  

那 了解到现在,基本原理 已经很清楚了,  下面 就是代码组装一下


简略 闹钟 实现 原理

  通过manager  对象 给 sender 意图 注册一个重复 触发事件,一旦触发  就会被 AlarmReciever 接收到。



完整DEMO 下载