- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android 4.0 Alarm机制浅析
Android 4.0 Alarm 机制浅析
Author: VIC.LUO@CELLON.COM
最近在做关于Alarm 的一些东西,所以就把Android 平台上的alarm 的源代码给稍微看了
看。我个人其实基本不写文档的,而且即使写,也不过区区数字,这个应该是我工作4 年
来的第二篇文档(第一篇是写的和我一直以来工作相关的Messaging)所以内容上和排版
上大家就不要见怪。
Android 系统中alarm 机制最大的体现着就是闹钟这个app 了。通过这个应用我们可以设
置自己的各种定时闹钟,当然系统中的各种定时相关功能的实现也基本全部依赖Alarm 机
制。
闹钟的代码在 packages\apps\ DeskClock\src\com\android\deskclock 目录下,可以自行查看,
这里主要说的是Alarm 机制。
Alarm 机制实现的代码主要在
./frameworks/base/core/java/android/app/AlarmManager.java
./frameworks/base/services/java/com/android/server/AlarmManagerService.java
./frameworks/base/services/jni/com_android_server_AlarmManagerService.cpp
再往下就是驱动和kernel 的代码,个人对驱动和kernel 的代码不了解,就不说了。
AlarmManager 是framework 中提供给用户来使用的API ,其实现在AlarmManagerService ,
为一个server,通过binder 机制来提供服务,开机便注册到system_server 进程中 (所有
server 实现基本都如此)代码如下(systemserver.java )
alarm = new AlarmManagerService(context);
ServiceManager.addService(Context.ALARM_SERVICE, alarm);
下面就来介绍一下AlarmManagerService ,本来想用ams 代替,不过一般情况下ams 指的
是ActivityManagerService,所以也就罢了。
AlarmManagerService 的初始化:
1. mDescriptor = init(); 打开设备驱动,其jni 实现为
(com_android_server_AlarmManagerService.cpp )
static jint android_server_AlarmManagerService_init(JNIEnv* env, jobject obj)
{
return open(/dev/alarm, O_RDWR);
}
2. 设置时区
String tz = SystemProperties.get(TIMEZONE_PROPERTY);
if (tz != null) {
setTimeZone(tz);
}
3. mTimeTickSender 这个pendingintent 的作用应该是系统中经常用到的,它是用来
给发送一个时间改变的broadcast,Intent.ACTION_TIME_TICK,每整数分钟的开始
发送一次,就是每分钟的开始就发送,应用可以注册对应的receiver 来干各种事,
譬如更新时间显示等等,具体怎么触发的稍后再说。
mDateChangeSender 这个pendingintent 的作用是啥?代码中时这样写的
Intent.ACTION_DATE_CHANGED,其实和mTimeTickSender 差不多,只是它是每天
的开始发送一次,应该就是00:00:00 发送吧
这2 个pendingintent 和ClockReceiver 有莫大的关系,ClockReceiver 的构造函数如
下
您可能关注的文档
- TMS320C672x系列浮点DSP的EMIF研究与应用_张西峰.pdf
- _HDMI、DVI、VGA、RGB、分量、S端子、USB接口_介绍.pdf
- xaut_第2章_MCS-51结构和原理.pdf
- 条码扫描器与单片机的接口设计.pdf
- 电铁牵引变电站无功补偿及滤波微机监控系统(Ⅰ)——工作原理及硬件设计.pdf
- Z16C32SL中文资料(zilog)中文数据手册「EasyDatasheet - 矽搜」.pdf
- 本科单片微型计算机原理及应用第4章.pdf
- 计算机组成原理实验讲义_2012版.pdf
- 湖南工程学院 单片机考试试卷.pdf
- FN_HONDA2013 接口合安装使用说明_v20130901.pdf
文档评论(0)