《Android实战基础教程》课件第七章_第1页
《Android实战基础教程》课件第七章_第2页
《Android实战基础教程》课件第七章_第3页
《Android实战基础教程》课件第七章_第4页
《Android实战基础教程》课件第七章_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

目录7.1创建广播7.2普通广播7.3有序广播七、BroadcastReceiver七、BroadcastReceiver

启动BroadcastReceiver(1)创建需要启动BroadcastReceiver的Intent;(2)调用Context的sendBroadcast()或sendOrderedBroadcast()方法来启动指定的BroadcastReceiver。

实现BroadcastReceiver只要重写BroadcastReceiver的onReceive(Conextcontext,Intentintent)方法即可。7.1创建广播七、BroadcastReceiver

实现了BroadcastReceiver,就应该指定该BroadcastReceiver能匹配的Intent,此时有两种方式:(1)使用代码进行指定。调用BroadcastReceiver的Context的registerReceiver(BroadcastReceiverreceiver,IntentFilterfilter)方法进行指定。例如:(2)在AndroidManifest.xml文件中配置。例如:七、BroadcastReceiver

如果BroadcastReceiver的onReceiver()方法不能在10秒内执行完成,Android会认为该程序无响应。所以不要在BroadcastReceiver的onReceive()方法里执行一些耗时操作,否则会弹出ANR。

如果确实需要根据Broadcast来完成一项比较耗时的操作,则可以考虑通过Intent启动一个Service来完成该操作,不应考虑使用新线程去完成耗时操作,因为广播接收者本身的生命周期很短,可能出现的情况是子线程还没有结束,BroadcastReceiver就已经退出了。

如果BroadcastReceiver所在的进程结束了,虽然该进程内还有用户启动的新线程,但由于该进程不包含任何活动组件,因此系统可能在内存紧张时有限结束该进程,这样就可能导致BroadcastReceiver启动的子线程不能执行完成。七、BroadcastReceiver

在程序中发送广播需调用Context的sendBroadcast(Intentintent)方法,这条广播将会启动intent参数所对应的BroadcastReceiver。示例:发送Broadcast和使用BroadcastReceiver接收广播。该程序的Activity界面中包含了一个按钮,当用户单击该按钮时程序会向外发送一条广播。7.2普通广播七、BroadcastReceiver七、BroadcastReceiver

粗体字代码用于创建一个Intent对象,并使用该Intent对象对外发送一条广播,所使用的BroadcastReceiver代码:七、BroadcastReceiver

当符合该MyBroadcastReceiver的广播出现时,该MyBroadcastReceiver的onReceive()方法将会触发,从而在该方法中显示广播所携带的信息。

上面发送广播的程序中在指定发送广播时所用的Intent的Action为“com.iboss.receiver”,需要广播接收者监听Action,在清单文件中增加配置即可:七、BroadcastReceiver

运行该程序,点击程序中的“发送广播”按钮,观察Logcat输出,从Logcat可以看出,广播接收者接收到了MainActivity发送的广播同时收到它携带的数据。图7.1七、BroadcastReceiverBroadcast分为两种:1.NormalBroadcast(普通广播):NormalBroadcast是完全异步的,可以在同一时刻被所有接收者接收到,消息传递的效率比较高,但缺点是接受者不能将处理结果传递给下一个接收者,并且无法终止Broadcast的传播。2.OrderedBroadcast(有序广播):OrderedBroadcast的接收者将按预先声明的优先级依次接收Broadcast。7.3有序广播七、BroadcastReceiverContext提供了两个方法用于发送广播:(1) sendBroadcast():发送普通广播。(2) sendOrderedBroadcast:发送有序广播。案例:用师父传功的场景来模拟接收者接收一个发送广播。师父对3个徒弟一视同仁,教授徒弟武功,可以模拟成发送普通广播。当发送普通广播时,每个徒弟学习相同的内容(同时接收广播)。如果师父只传授给大师兄,大师兄传授给二师兄,二师兄再传授给三师兄,就需要优先级,这样又存在一个能力问题,师兄们的能力有限,不能完全接收上一级教授的知识,那么他相应地传给下一级的功夫肯定打折扣。这就模拟了有序广播。七、BroadcastReceiver

该程序的Activity界面上只有两个普通按钮,一个发送普通广播,另一个发送有序广播,项目结构:图7.2七、BroadcastReceiver

在清单文件中注册三个广播接收者。它们的action都是相同的,这样就确保发送广播都能接收到,优先级别分别为1000、600、400:七、BroadcastReceiver布局文件设置了2个按钮,并且同时绑定了点击事件:七、BroadcastReceiver

在这三个广播接收者中,都接收了传递来的数据,并做相应的修改。

大师兄的代码如下:七、BroadcastReceiver二师兄的代码如下:七、BroadcastReceiver三师兄的代码如下:七、BroadcastReceiverMainActivity中处理普通广

温馨提示

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

评论

0/150

提交评论