广播的类型:

1、标准广播(Normal broadcat)

  完全异步执行的广播,所有广播接收器同一时间接收广播消息。

  效率高,但无法被截断。

2、有序广播

  同步执行的广播,同一时刻只能有一个广播接收器接收广播消息,当执行完毕后才会继续传递。

  优先级高的先收到广播,并且可以截断广播。

接收系统广播:

  注册:动态注册(代码)和静态注册(AndroidaManifest.xml)

动态广播:

  1、继承Broadcastreceiver

  2、重写onReceive()方法

  3、注册registerReceiver()

  4、动态注册的广播接收器一定要取消注册,unregisterReceiver()

  5、声明权限在AndroidManifest.xml中

静态广播接收器在AndroidManifest.xml中通过<receiver>标签进行注册,

<receiver android:name=".BootCompleteReceiver ">
  <intetn-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED">   //开机广播
  </intent-filter>
</recevier>

  广播接收器中不允许开启线程,不要添加过多逻辑或进行任何耗时操作。

自定义广播:

  1、标准广播:

  (1)定义一个广播接收器

  (2)在事件里加入自定义广播的逻辑

  (3)构建Intent对象,传入要发送的广播的值

  (4)调用sendBroadcast()方法,发送广播

  (5)在AndroidManifest.xml中<receiver>注册

  2、有序广播:

  基本与标准广播一样,发送调用sendOrderedBroadcast()方法。

  在AndroidManifest.xml中设置优先级<intent-filter android:priority="100">

  截断广播调用abortBroadcast()方法

本地广播:(解决安全性问题)

  使用LocalBroadcastManager对广播进行管理。

  (1)通过LocalBroadcastManager.getInstance(this)获取他的实例

  (2)构建LocalReceiver类

  (3)通过LocalBroadcastManager的registerReceiver()方法进行动态注册。方法中包含2个参数localReceiver和intentfilter

  (4)调用LocalBroadcastManager的sendBroadcast()方法进行发送广播

  (5)在onDestroy()方法中取消注册

  本地广播无法使用静态注册的方式来接收。

最新文章

  1. .NET中操作IPicture、IPictureDisp的小随笔
  2. 3.Git的诞生和其分布式的优点
  3. 解决在CentOS6.5下安装OpenStack(Icehouse版本 )出现的glance服务无法正常工作的问题
  4. Start cluster zookeeper in shell script
  5. Codeforces 161D Distance in Tree(树的点分治)
  6. 264分析两大利器:264VISA和Elecard StreamEye Tools
  7. [Everyday Mathematics]20150106
  8. POJ3122Pie(二分)
  9. 实现SELECT的全选,反选,AB选的JAVASCRIPT代码
  10. jstring 和char 之间的转换方法
  11. MAC 系统升级10.10以后PHP验证码错误的解决办法。[ 一行代码轻松解决! ]
  12. Objective-C日记-之KVC
  13. 面试(1)-java-se-字符串
  14. javascript之BOM编程Screen(屏幕)对象
  15. 数据流中的第k大元素的golang实现
  16. 如何在linux环境安装数据库
  17. Qt打包发布exe
  18. Fiddler安装证书
  19. pyqt5-定时器
  20. react-native 新手爬坑经历(Could not connect to development server.)

热门文章

  1. Sql Server中暂停命令
  2. Jquery实现静态切换tab
  3. iOS导航栏的正确隐藏方式【转】
  4. LINUX 设置ll的时候显示日期的格式
  5. logstash插件
  6. 树状sql--采用递归方式获取节点
  7. iOS,手势识别简单使用
  8. Leetcode: Valid Word Square
  9. 【C#进阶】多播委托和委托数组像是一回事~
  10. LINQ使用细节之.AsEnumerable()和.ToList()的区别