Android原生模块DeskClock分析1(2)
DeskClock分析文档
PendingIntent就是一个Intent的描述,我们可以把这个描述交给别的程序,别的程序根据这个描述在后面的别的时间做你安排做的事情 · PendingIntent和Intent的区别: · 区别一:
Intent 是及时启动,intent 随所在的activity 消失而消失。
PendingIntent可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getService来得到pendingintent的实例,当前activity并不能马上启动它所包含的intent,而是在外部执行pendingintent时,调用intent的。之所以他有这样的特性,正由于pendingintent中 保存有当前App的Context。 · 区别二:
Intent一般是用作Activity、Sercvice、BroadcastReceiver之间传递数据 Pendingintent,一般用在Notification上,可以理解为延迟执行的intent。
? AlarmManager
· Alarm manager 主要管理硬件时钟。一些与时间相关的应用,如日历,闹钟等需要使用Alarm
Manager的服务。Alarm manager功能相对比较简单,相关代码位于
· AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); · frameworks/base/core/jni/server/com_android_server_AlarmManagerService.cpp
这部分代码直接管理硬件时钟,设备名为/dev/alarm。包括打开设备,关闭设备,设置时区,设置触发时间 (timeout),以及等待时钟触
· frameworks/base/services/java/com/android/server/AlarmManagerService.java
这部分封装目录一中的代码,向上提供java接口,同时与客户端(如calendar)交互,接收来自客户端的时钟设置请求,并在时钟触发时通知客户端。
? ContentObserver
ContentObserver有点类似于BroadcastReceiver,当某类事件发生时进行调用.ContentObserver一般和系统或第三方程序提供的Provider一起使用.
· 当为某个URI注册了ContentObserver后,对其进行操作后都会调用注册的回调函数
mContext.getContentResolver().registerContentObserver( Settings.System.CONTENT_URI, true, mFormatChangeObserver); · 当 Settings.System.CONTENT_URI有改变的时候就触发
public void onChange(boolean selfChange) { setDateFormat(); updateTime(); }
? Parcelable
· Parcelable的作用:在activity之间传递对象的时候,通过Parcelable来传递
· Preference 提供了一种轻量级的存取机制,主要是可以通过关键字读取和存储某个
Preference value · ContentResolver
6
DeskClock分析文档
· ContentResolver是通过URI来查询ContentProvider中提供的数据。 · ContentResolver cr = getContentResolver(); · ContentResolver的主要方法 final uri insert(Uri url, ContentValues values)Inserts a row into a table at the given URL. final int final Cursor final int
? newView和bindView的作用
· public void bindView(View view, Context context, Cursor cursor),重用一个已有的view,
使其显示当前cursor所指向的数据。
public View newView(Context context, Cursor cursor, ViewGroup parent),为cursor所指向的数据新建一个View对象,并显示其数据。
· 举个例子:比如你一个listview在一个屏幕里一次只能显示8条数据,那么第一次显示的时
候就会newView 8次生成8个View,调用bindView绑定8条数据,而你有16条数据,但你拖动滚动条看9-16条时,此时不会再调用newView了,而只能调用了bindView去绑定新的数据而了。这样就省了空间了。
? Notification与Toast都可以起到通知、提醒的作用。但它们的实现原理和表现形式却完全
不一样。Toast其实相当于一个组件(Widget)。有些类似于没有按钮的对话 框。而Notification是显示在屏幕上方状态栏中的信息。还有就是Notification需要用NotificationManager来管理,而Toast只需要简单地创建Toast对象即可。
? Android提供了ContentProvider,一个程序可以通过实现一个Content provider的抽象接口
将自己的数据完全暴露出去,而且Content providers是以类似数据库中表的方式将数据暴露。Content providers存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。
· 要想使应用程序的数据公开化,可通过2种方法:
创建一个属于你自己的Content provider或者将你的数据添加到一个已经存在的Content provider中,前提是有相同数据类型并且有写入Content provider的权限。
? 如何通过一套标准及统一的接口获取其他应用程序暴露的数据?
delete(Uri url, String where, String[] selectionArgs)Deletes row(s) specified by a content URI. query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)Query the given URI, returning a Cursor over the result set. update(Uri uri, ContentValues values, String where, String[] selectionArgs)Update row(s) in a content URI. 7
DeskClock分析文档
· Android提供了ContentResolver,外界的程序可以通过ContentResolver接口访问
ContentProvider提供的数据。
闹铃
? 闹铃功能
在系统中闹铃服务功能不仅仅对闹钟应用程序服务,最重要的是可以利用该闹铃服务功能提供的唤醒能力来做定时器。这样即便应用程序没有运行或者是没有启动的情况下,只要其注册过闹铃,那么该闹铃到时间后,系统可以自动将该应用程序启动,这就是所谓的闹铃“唤醒“功能。
AlarmManager将应用与服务分割开来后,使得应用程序开发者不用关心具体的服务,而是直接通过AlarmManager来使用这种服务。AlarmManager与AlarmManagerServie之间是通过Binder来通信的,他们之间是多对一的关系。
· void cancel(PendingIntent operation)
// 取消已经注册的与参数匹配的闹铃
void set(int type, long triggerAtTime, PendingIntent operation) //注册一个新的闹铃
void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
//注册一个重复类型的闹铃
void setTimeZone(String timeZone) //设置时区
· 5种闹铃类型:
public static final int ELAPSED_REALTIME
//当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠时间,可以通过调用SystemClock.elapsedRealtime()获得。系统值是3 (0x00000003)。
public static final int ELAPSED_REALTIME_WAKEUP
//能唤醒系统,用法同ELAPSED_REALTIME,系统值是2 (0x00000002) 。
public static final int …… 此处隐藏:2242字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




