<1>广播有几种形式?什么特点?
普通广播:一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播信息,因此它们接收的先后是随机的。
有序广播:一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能收到这条广播消息,当这个广播接收器中的逻辑执行完成后,广播才会继续传递,所以此时的广播接收器是有先后顺序的,且优先级高的广播接收器会先收到广播消息。有序广播可以被接收器截断使得后面的接收器无法收到它。
本地广播:发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收本应用程序发出的广播
粘性广播:这种广播会一直滞留,当有匹配该广播的接收器被注册后,该接收器就会收到此条广播。
<2>广播的两种注册形式?区别在哪?
1.静态注册
Androidmanifest.xml中进行注册,静态注册的接收器即便程序未启动也能接收到广播
<receive android:name=".BroadCastReceiverDemo"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"> </intent-filter> </receiver>
2.动态注册
代码中进行注册,当前代码页面退出时就不会接收广播,需要解绑,否则会内存泄漏。动态注册的接收器必须要在程序启动之后才能接收到广播
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); BroadCastReceiverDemo receiver = new BroadCastReceiver(); registerReceiver(receiver, filter);