《Android项目式程序设计》09 广播接收者写字字帖_第1页
《Android项目式程序设计》09 广播接收者写字字帖_第2页
《Android项目式程序设计》09 广播接收者写字字帖_第3页
《Android项目式程序设计》09 广播接收者写字字帖_第4页
《Android项目式程序设计》09 广播接收者写字字帖_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目九广播接收者学习目标了解广播接收者组件的作用和意义掌握使用广播发送信息掌握使用监听广播掌握保存广播相关信息情景导入智能手机已成为人们生活工作中存储发送信息文件的重要工具,而广播是一种广泛运用在应用程序之间传输信息的机制,适用于信息的发送、收和保存。本次任务主要学习使用广播接收者对信息进行接收和发送,使读者对信息的发送与存储有一定的了解。任务描述本任务将设计一款利用广播进行监听的“闹钟”软件。使用线性布局技术来设计闹钟系统界面主界面点击“设置闹钟”进行时间的设置,并将设置的时间显示到界面当前时间与设置时间一致时,弹出对话框进行提示用户可点击“关闭”,将闹钟关闭在主界面中,可点击“移除闹钟”,将已设置的闹钟进行移除当用户退出应用程序时,会弹出“确认退出”提示框,点击“确定”按钮则退出,点击“取消”按钮则回到主界面【基本框架】基本框架如图9.1所示,将框架图转换成的效果如图9

.2所示。

任务描述任务技能技能点1广播接收者1广播接受者简介BroadcastReceiver是Android系统的四大组件之一,

BroadcastReceiver监听的事件源是Android应用中的其他组件。如startService()方法启动的Service之间的通信,就可以借助BroadcastReceiver来实现,下面的图9.3是广播的流程图。任务技能BroadcastReceiver用于接收程序所发出的BroadcastIntent,与应用程序启动Activity、Service一样,需要两步启动:创建需要启动的BroadcastReceiver的Intent;调用Context的sendBroadcast()方法或sendOrderedBroadcast()方法启动指定的BroadcastReceiver。任务技能

2广播接收者注册方法实现BroadcastReceiver的方法只需重写BroadcastReceiver的onReceive(Contextcontext,Intentintent)方法即可。实现BroadcastReceiver后,指定该BroadcastReceiver所匹配的Intent,以下有两种方法,分别是动态注册与静态注册。使用代码进行动态注册,调用BroadcastReceiver类的Context的registerReceiver()方法,动态注册的特点是,在代码中进行注册后,当应用程序关闭后,就不再进行监听。静态注册是在AndroidManifest.xml文件中配置,注册常驻是静态注册的特点,

不论该应用是否处于活动状态,如有广播传来,将会被系统调用自动运行。

任务技能3广播事件的执行每次执行系统Broadcast(广播)事件,系统就会创建对应的BroadcastReceiver实例,并自动触发它的onReceive()方法,onReceive()方法执行完后,BroadcastReceiver实例会被销毁。若BroadcastReceiver的onReceive()方法在10秒内不能执行完成,系统会认为程序无响应,所以不能在BroadcastReceiver的onReceive()方法里执行一些耗时的操作,否则会弹出ANR对话框。任务技能广播接收者(BroadcastReceiver)其实是一种用于接收广播的Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。订阅了此Intent的多个广播接收者都可以接收此广播。要实现一个广播接收者方法如下。(1)继承BroadcastReceiver,并重写onReceive()方法。任务技能(2)订阅感兴趣的广播Intent,订阅方法有两种:使用代码进行订阅。在AndroidManifest.xml文件中的<application>节点里进行订阅。任务技能除了短信到来广播Intent,Android还有很多广播Intent,如:开机启动、电池电量变化、时间已经改变等广播Intent,接收电池电量变化广播Intent如下所示。(1)在AndroidManifest.xml文件中的<application>节点里订阅此Intent。任务技能(2)接收开机启动广播Intent,在AndroidManifest.xml文件中的<application>节点里订阅此Intent。(3)并且要进行权限声明。任务技能技能点2广播的发送与接收在程序中发送广播十分简单,需要调用Context的sendBroadcast(Intentintent)方法,广播将会启动Intent参数所对应的BroadcaseReceiver。以下是对如何发送Broadcast、使用BroacastReceiver接收广播的介绍。1广播的发送Broadcast分为普通广播和有序广播。普通广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播,这样就提高了数据传播的安全性。但普通广播无法通过静态注册的方式来接收。普通广播使用LocalBroadcastManager来对广播进行管理,并提供了发送广播及注册广播接收器的方法,图9.4、图9.5分别发送为普通广播和有序广播的过程示意图。任务技能图9.4普通广播图9.5有序广播任务技能普通广播对于多个接收者来说是完全异步的,每个接收者都不需要等待便可以接收到广播,接收者之间不会有影响。接收者无法终止无法阻止其他接收者的接收动作有序广播(OrderedBroadcast)比较特殊,它每次只发送到优先级较高的接收者那里,然后由优先级高的接受者再传播到优先级低的接收者那里,优先级高的接收者有能力终止这个广播。BroadcastIntent的传播一旦终止,后面的接收者将无法接收到Broadcast。另外,OrderedBroadcast的接收者可以将数据传递给下一个接收者。Context提供以下两种方法由于发送广播,如表9.1所示任务技能对于OrderedBroadcast而言,优先接收到Broadcast的接收者可以通过setResultExtras(Bundle)方法将处理结果存入Broadcast中,然后传给下一个接收者,下一个接收者通过代码Bundlebundle=getResultExtras(true)可以获取上一个接收者存入的数据。有序广播的注意事项有以下几点:(1)有序广播被广播接收器接收时,广播接收器注册也可以不设置监听优先级即<intent-filterandroid:priority="1000">中的android:priority属性不用配置,如果不设置仍然可以监听到广播,但是这样一来就是另一种监听顺序。这样可以按照监听普通的广播一样去监有序广播。任务技能(2)BoradcastReceiver中方法

publicfinalboolean

isOrderedBroadcast()

,可以判断当前进程正监听到的广播是否有序,如果有序返回true,无序返回false。(3)广播是否有序与广播是否有权限无关。两者也可以接合使用。(4)多个广播接收器监听有序广播时,如果没有按照监听有序广播的形式去监听,即在注册广播接收器时不设置优先级,不同项目中的广播接收器的监听顺序就是任意的,如果在一个项目中想先收到广播,则在清单文件中就要先注册。(5)系统收到短信时,发出的Broadcast就是OrderedBroadcast。如果先实现阻止用户收到短信,就可以通过设置优先级,让自定义的BoradcastReceiver先获取到Boradcast,然后终止Boradcast。任务技能发送自定义的无序广播的过程,首先要发送广播,代码如下。任务技能然后是接收广播,我们需要新建一个类,继承BroadcastReceiver,具体实现方法如下任务技能2广播的接收

BroadcastReceiver的一个重要用途就是接收系统广播。当应用需要在系统特定时刻执行某些操作,就可以通过监听系统广播来实现。Android的大量系统时间都会对外发送普通广播。Android常见的广播Action常量如表9.2所示。任务技能接收系统的广播首先要新建一个类继承BroadcastReceiver,以监听SD卡状态的广播接收者为例,具体实现方法如下。任务技能最后在清单文件中添加意图过滤器,action里写监听的内容。具体实现方法如下。任务实施第一步:在Eclipse中创建一个Android工程,命名为“闹钟系统”,并设计界面。如图9.2所示。第二步:在src文件夹下建立MainActivity.java文件并实现界面初始化。第三步:点击“设置闹钟”按钮,实现闹钟设置功能并实现闹钟监听功能。第四步:点击“移除闹钟”按钮,实现闹钟移除功能并实现闹钟监听功能。第五步:实现退出程序,显示确认退出提示框。第六步:运行程序,运行结果如图9.6所示。任务拓展【拓展目的】熟悉并掌握使用广播接收者发送、监听、保存信息【拓展内容】在“闹钟系统”的基础上实现闹铃功能,界面如图9.3所示。【拓展步骤】1设计思路根据闹钟提示播放闹铃音乐。2开启和关闭闹铃功能。任务拓展任务总结本任务主要介绍了BroadcastReceiver,以及手机监听的使用方法。系统提供的Service和Broa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论