Android的标准广播(Normal broadcasts)
标准广播一种完全异步执行的广播,在广播发出后,所有的广播接收器几乎都会在同一个时刻接收到这条广播,它们之间并没有任何先后顺序。
Android的有序广播(Ordered broadcasts)
一种同步执行的广播,在广播发出后,同一个时刻只会有一个广播接收器接收到这条广播,当这个广播接收器的逻辑执行完毕后,广播才会继续传递。因此,广播接收器是有先后顺序的,优先级高的广播接收器可以先收到广播,同时,优先级高的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。
Android的本地广播(Local Broadcasts)
区别于前面两种系统全局广播(即发出的广播可以被其他任何应用程序接收到,同时也可以接收来自于其他任何应用程序的广播),如果我们发送的广播携带了比较关键性的数据,这个时候如果被其他应用拦截就容易出现安全性的问题。为了解决类似问题,我们可以使用本地广播,使用该机制发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用发出的广播。
广播的注册
静态注册就是在AndroidManifest.xml中注册该广播接收器,以<receiver></receiver>标签注册,如:
而广播的动态注册则是在需要使用到的类(如Activity)中注册
步骤为:首先定义要注册的广播,如:
然后以registerReceiver()注册广播,如:
注意动态注册的广播一定要在退出当前类时以unregisterReceiver()取消注册,如:
本地广播比较特殊,要注册本地广播需要先获取本地广播管理器实例然后使用其中方法调用
本地广播的注册:
本地广播取消注册:
广播的发送
标准广播的发送:sendBroadcast(intent)
有序广播的发送:sendOrderedBroadcast(intent, null)
有序广播的截断:abortBroadcast()
本地广播的发送:需要先获取本地广播管理器实例,再发送广播