broadcast receiver: 用以监听系统或用户程序broadcastIntent,它本质上是系统的一种全局监听器(与onXxxxListener相似但不同),只要存在与之匹配的Intent被广播出来,BroadcastReceiver就会被激活,所以BroadcastReceiver与具有完整生命周期的ActivityService不同(广播接收者只有一个生命周期回调函数onReceive)。BroadcastReceiver的工作流程是这样的:系统程序或用户程序广播了某Intent之后,就会被与该Intent匹配的广播就收者(这个广播接收者可以是用户自己通过扩展BroadcastReceiver得到的Receiver)所接收,接着就会执行onReceive(Contextcontext,Intentintent)方法中的代码,在这里可以完成自己要实现的功能。

所以,为使Receiver与广播的某Intent相匹配,则需要注册该Receiver,注册一个广播接收者Receiver方法有两种。

第一种是在android的manifest中静态注册:

<receiver android: name =“包名.自己扩展的广播接收者名”>

<intent-filter>

<!----和Intent中的action对应--->

<actionandroid:name=“com.forrest.action.mybroadcast”/>

</intent-filter>

</receiver>

第二种是在代码中动态注册:

IntentFilter filter = new IntentFilter(“com.forrest.action.mybroadcast”);//和广播中Intent的action对应;

MyBroadcastReceiver br= newMyBroadcastReceiver();

registerReceiver(br, filter); // registerReceiver(BroadcastReceiverreceiver,IntentFilterfilter);

但此方法需要解除所注册的广播:

在onStop()或onDestroy()方法中添加unRegisterReceiver(br);

两种注册类型的区别是:

1)第一种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

2)第二种不是常驻型广播,也就是说广播跟随程序的生命周期。

注:除了用于过滤广播的IntentFilter可以在代码中动态创建外,其他组件的IntentFilter必须在AndroidManifest.xml中注册,如:ActivityService

更多相关文章

  1. 哪个移动系统适合程序员?
  2. 如何开始为Android开发应用程序? [重复]
  3. Android程序老是报错
  4. 王家林最受欢迎的一站式云计算大数据和移动互联网解决方案课程 V
  5. 当在调试模式下启动时,Android应用程序崩溃。
  6. 关于AndroidStudio中提示cannot resolve symble R,但程序可以正常
  7. 北京一年工作经验的java web开发程序员税前5K是不是要高了?
  8. 黑马程序员_Java基础_我的Day09学习笔记
  9. 《JavaScript 高级程序设计》学习总结六(1)

随机推荐

  1. 如何定义两个日期之间的Kendo网格列过滤
  2. How to prevent Twitter Bootstrap chang
  3. 纯CSS最小化高度标题,绝对定位DIV内最大化
  4. iOS:从NSString中删除(一个html字符串)
  5. 在Rails link_to中添加span标记
  6. html5基础 label 配合input,辅助输入
  7. 如何取HTML中的select中的值
  8. HTML+jQuery图片上传示例
  9. js字符串与html代码互相转换时怪想法:自
  10. 设计不是使用跨度和按钮