AlarmManager

来源:互联网 发布:mallat小波算法原理 编辑:程序博客网 时间:2024/05/16 17:25
对于一个闹钟应用的实现,个人觉得最主要的应该要属于AlarmManager了。AlarmManager称为全局定时器,字面意思就是闹钟管理(请原谅我蹩脚的英语),是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,通常我们使用 PendingIntent(这货在调用系统发送短信的时候也有,找个时间温习下Intent,顺带把这个也好好学习下),PendingIntent可以理解为Intent的封装包,简单的说就是在Intent上在加个指定的动作。在使用Intent的时候,我们还需要在执行startActivity、startService或sendBroadcast才能使Intent有用。而PendingIntent的话就是将这个动作包含在内了。
 PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getService来得到pendingintent的实例,用于即将发生的事情
//定义一个PendingIntent对象,此处先照样画葫芦,下次学了再细讲
PendingIntent pi = PendingIntent.getBroadcast(Context, int, Intent, int);
二、AlarmManager常用方法简介
 
  AlarmManager类提供的常用方法主要有一下几个:
 
复制代码
public void set(int type, long triggerAtMillis, PendingIntent operation)
功能:用于设置一次性闹钟,第一个参数表示闹钟类型,第二个参数表示触发这个闹钟要等待的时间,与type相关(不懂英文就查字典吧,我也是查了才理解这个参数的意思的),
第三个参数闹钟响应的动作
参数:type:    AlarmManager.ELAPSED_REALTIME    表示闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始),状态值为3;
            AlarmManager.ELAPSED_REALTIME_WAKEUP    表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用相对时间,状态值为2;
            AlarmManager.RTC  表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为1;指定系统时间System.currentTimeMillis()与triggerAtMillis相等时启动operation所对应的组件
            AlarmManager.RTC_WAKEUP  表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0;
            AlarmManager.POWER_OFF_WAKEUP  表示闹钟在手机关机状态下也能正常进行提示功能,该状态下闹钟也是用绝对时间,状态值为4;不过我测试的时候并没有
       这个常量,估计和SDK有关
    operation    绑定了闹钟的执行动作,比如发送一个广播、给出提示等等。
 
public void setExact(int type, long triggerAtMillis, PendingIntent operation)
功能:在规定的时间精确的执行闹钟,这个函数应该是闹钟执行精度比较高吧
 
public void setRepeating(int type, long triggerAtMills, long intervalMillis, PendingIntent operation)
功能:该方法用于设置重复闹钟,第一个参数表示闹钟类型,第二个参数表示触发这个闹钟要等待的时间,第三个参数表示闹钟两次执行的间隔时间,第三个参数表示闹钟响应动作。
 
public void setInexactRepeating(int type, long triggerAtMills, long intervalMillis, PendingIntent operation)
功能:设置一个重复闹钟的不精确版本,它相对而言更节能一些,因为系统可能会将几个差不多的闹钟合并为一个来执行,减少设备的唤醒次数。由于不是精确版,所以这里的intervaMills
会略有不同
参数:intervalMillis:    INTERVAL_FIFTEEN_MINUTES     
                        INTERVAL_HALF_HOUR 
                        INTERVAL_HOUR 
                        INTERVAL_HALF_DAY 
                        INTERVAL_DAY 
 
public void cancel(PendingIntent operation)
功能:取消一个设置的闹钟,移除任意匹配意图的闹钟
 
public void setTimeZone(String timeZone) 
功能:设置系统的默认时区。需要android.permission.SET_TIME_ZONE权限 
0 0
原创粉丝点击