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
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- alarmManager
- AlarmManager
- AlarmManager
- AlarmManager
- ListView的9个重要属性
- bootstrap.css和esayUi.css样式冲突的解决
- hdu4740The Donkey of Gui Zhou dfs水题
- 不能约束两个视图,在没有一个公共superview的情况下
- 笔试最长子数组和最大子矩阵c#
- AlarmManager
- avaScript高级程序设计之在 HTML 中使用 JavaScript 第2.1讲笔记
- Adb Error
- netbeans中表格使用1
- 杭电OJ -- 2091 空心三角形
- (php)输出杨辉三角
- hdu4731Minimum palindrome 构造
- 堆和栈的区别 (被别人问了无数次 却依旧答错,答反, 每次都栽在这问题上!!)
- 文本