Android中的广播主要分为两种类型,标准广播和有序广播。
标准广播: 是一种完全异步的广播,当广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,没有顺序可言。这种广播的效率会比较高,同时也无法被截断 有序广播: 是一种同步执行 的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。
广播的注册分为,静态注册与动态注册
静态注册: 通过AndroidManifest.xml进行配置,实现广播的运行 静态广播,在应用程序未启动的情况下可以接受到广播
< uses- permission android: name= "android.permission.RECEIVE_BOOT_COMPLETED" / >
< application
android: allowBackup= "true"
android: icon= "@mipmap/ic_launcher"
android: label= "@string/app_name"
android: roundIcon= "@mipmap/ic_launcher_round"
android: supportsRtl= "true"
android: theme= "@style/AppTheme" >
< receiver android: name= ".NetWorkReceiverTest" >
< intent- filter>
< action android: name= "android.intent.action.BOOT_COMPLETED" / >
< / intent- filter>
< / receiver>
< / application>
动态注册: 就是在代码中进行注册 动态注册的广播可以自由地控制注册与注销,在灵活性方面有很大的优势。但存在着一个缺点,即必须要在程序启动之后才能接收到广播。
var intentFilter = IntentFilter ( )
intentFilter. addAction ( "android.net.conn.CONNECTIVITY_CHANGE" )
var netWorkReceiverTest = NetWorkReceiverTest ( )
registerReceiver ( netWorkReceiverTest, intentFilter)