广播有三种:默认广播、有序广播、粘性广播
发送默认广播:context.sendBroadcast方法
发送有序广播:sendOrderedBroadcast方法,在注册广播中的intentfilter的android:priority属性(-1000 到1000),数值越大,优先级越高
发送粘性广播:sendStickyBroadcast方法,发送粘性广播需要申请权限"android.permission.BROADCAST_STICKY",发送的粘性广播可以移除removeStickyBroadcast方法
广播的发送和接收通过Intent-Filter来对应,和Activity的隐式启动类似
定义广播接收器:
1.继承BroadcastReceiver,并重写onReceive方法来响应事件
2.定义后需要注册,
注册可在清单文件中注册(和Activity类似);
也可在代码中,用registerReceiver方法完成,用unrevisterReceiver方法注销(这两个方法context里有)
对三种广播的个人理解:
普通广播:
所有接收该action的广播接收器都可接收,接收顺序随机,但代码注册的接收器比静态注册的接收器优先,普通广播不能被终止;
有序广播:
1.可以设置权限,必须申请权限的广播接收器才能接收
2.接收顺序按优先级(IntentFilter.priority)接收,同级别的接收器接收先后是随机的
3.每个广播接收器可以setResultExtras()一个Bundle对象,下一个接收器可以通过 getResultExtras()获取该Bunlder对象
4.可以通过abortBroadcast()终止该广播;
粘性广播:
系统会保留该广播中的intent,以后得接收器可以接收该广播,该条广播也可被移除,接收顺序与普通广播类似