Android--广播机制

1.Android中广播分为两种类型:
  1)标准广播:完全异步执行的广播,在广播发出后,所有的广播接收器几乎会在同一时刻接收到,它们之间没有顺序可言,效率高,不可截断;
  2)有序广播:同步执行的广播,广播发出后,同一时刻只会有一个广播接收器能够接收到的广播,当这个广播接收器中的逻辑执行完毕之后,广播才能继续传播,有序,可截断;
2.注册广播的两种方法:
  1)动态注册:在代码中注册,需要程序先启动后才开始工作;
  2)静态注册:在配置文件 AndroidManifest.xml 中注册,程序不启动的时候也可以接收广播;
3.动态注册自定义广播步骤:
  1)创建 MyBroadcastReceiver 类,继承 BroadcaseReceiver 类, 并重写 onReceive() 方法;
  2)创建 IntentFilter 类实例 intentFilter, 该类主要存放广播接收器需要接收的广播类型,调用 addAction() 方法添加;
  3)注册自自定义广播:registerReceiver(myBroadcastReceiver, intentFilter);
  4)活动销毁时需要取消注册:在 onDestroy() 方法中调用 unregisterReceiver(myBroadcastReceiver);
4.静态注册广播接收器:
  1)创建 MyBroadcastReceiver 类,继承 BroadcaseReceiver 类, 并重写 onReceive() 方法;
  2)在 AndroidManifest.xml 中添加 <receiver> 标签,并指定 name 属性为自定义广播接收器类的全类名;
5.在重写的广播接收器 onReceive() 方法内,以避免出现耗时的操作,否则可能引起程序崩溃;
6.发送自定义广播:
  1)创建和注册自定义广播接收器,用于接收自定义广播;
  2)创建 Intent 实例 intent,指定自定义广播类型;
  3)在活动中调用 sendBroadcast(intent) 方法发送自定义广播;
  注:这里 sendBroadcast() 方法发送的是标准广播;
7.发送有序广播:
  1)具体步骤与上述类似,只是在发送广播的时候调用 sendOrderedBroadcast() 方法;
  2)可以给 广播接收器设置不同的优先级 priority ,优先级高的接收器将先接收到广播;
  3)先接收到广播的接收器可以调用 abortBroadcast() 方法来截断广播,这样后续的广播接收器将不再收到广播;
8.本地广播的使用:本地广播只能够在应用程序内部使用,它发出的广播将不会被其他应用程序接收,这样能够解决应用数据的安全性问题;
  1)本地广播的使用与全局广播类似,只是在(取消)注册的注册时候是通过 LocalBroadcastManager 的 [un]registReceiver()方法来注册(取消);
  2)本地广播只能在程序内部注册,而不能在 AndroidManifest.xml中注册;

原文地址:https://www.cnblogs.com/tengtao93/p/5259698.html