

图片来自于百度图片
广播的特点
广播总有播放者,和收听者,可以是一对一,可以是一对多
播放者总是被规定在一个频率发送广播内容,接收者通过这个相同的频率接收广播。
Adnroid中的广播

广播类型
普通广播:普通广播是完全异步的,可以在同一时刻(逻辑上)被所有广播接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播
有序广播:按照接收者声明的优先级别(声明在intent-filter元素的android:priority属性中,数越大优先级别越高,取值范围:-1000到1000。也可以调用IntentFilter对象的setPriority()进行设置),被接收者依次接收广播。如:A的级别高于B,B的级别高于C,那么,广播先传给A,再传给B,最后传给C。A得到广播后,可以往广播里存入数据,当广播传给B时,B可以从广播中得到A存入的数据。
注册方式
静态注册:即使你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到,他的注册方式就是在你的应用程序中的AndroidManifast.xml进行订阅的
动态注册:当应用程序结束了,广播自然就没有了,比如你在activity中的onCreate或者onResume中订阅广播,同时你必须在onDestory或者onPause中取消广播订阅。不然会报异常,这样你的广播接收器就一个非常驻型的了
需要注意的是,动态注册需要使用隐式intent方式,所以广播也要使用隐式的intent发送数据;静态注册显式和隐式都支持,因此我们通常都使用采用隐式intent发送数据。
代码示例
静态注册
在Manifest中注册广播订阅者
<receiver android:name=".StaticReciver">
<intent-filter> <action android:name="com.myboradcast.test"></action> </intent-filter>
</receiver>
继承BroadcastReceiver
public class StaticReciver extends BroadcastReceiver {
String TAG = "myboradcast"; @Override public void onReceive(Context context, Intent intent) { Log.i(TAG , "静态注册收到的action : " + intent.getAction()); } }
Activity中点击按钮发送广播
public void sendboradcast(View view){ Intent it = new Intent(); it.setAction("com.myboradcast.test"); sendBroadcast(it); }
动态注册
在Activity中注册广播订阅者
@Override protected void onResume() { super.onResume(); //注册接收广播 IntentFilter counterActionFilter =
new IntentFilter("com.myboradcast.test"); receiver = new TrendsReciver(); registerReceiver(receiver, counterActionFilter); } @Override protected void onPause() { super.onPause(); unregisterReceiver(receiver); }
使用静态注册方式中的发送广播按钮发送广播
运行结果

下期提要
下期主要说一说Android的通知机制,当学习完通知机制,就可以模拟实现微信新信息到达的通知了。
敬请期待!

长按,识别二维码,加关注,
可了解更多编程方面的知识,
让你看到每天一点点的进步。
谢谢点赞 + 分享!!!!!!

不积跬步,无以至千里;
不积小流,无以成江海。






