您的位置:首页 > 移动开发 > Android开发

三种广播,以及广播接收器的注册方式

2017-06-07 16:40 393 查看
广播有三种:

1.普通广播,只是普通的广播,接受顺序按配置的优先级接受,只有注册了对应的过滤器的接收器才能接受。

2.有序广播,接受顺序按配置的优先级接受,只有注册了对应的过滤器的接收器才能接受,接收器可以截断广播,排在后面的接收器接收不到广播。

3.粘性广播,已经被弃用了,广播发送后一直留在AMS中,即使是在粘性广播发送后再注册的接收器还是可以接收到粘性广播,这样的话该广播是不会停止的,只要伴随着注册接收器,广播仍然有效。

使用方法:
发送:

把信息装入一个Intent对象(如:Action、Category),通过调相应的方法将Intent对象以广播的方式发送出去: 

sendBroadcast(); 

sendOrederBroadcast(); 

sendStickyBroadcast();

接收:

当Intent发送之后,所有已经注册receivedBroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceiver()方法。所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceiver()方法。

注意:

BroadcastReceiver需要注册 

静态注册 :静态注册的广播接收器在app没有启动的情况下也可以接收到对应的广播,android:name属性代表的是接收器类。

代码动态注册:动态注册的广播接收器的声明周期同上下文周期相同,记得代码注册完,在上下文停止销毁之前注销接收器。

Manifest.xml文件中(静态注册):
//静态注册,全局有效
<receiverandroid:name=".MyReiceiver">  //MyReiceiver是广播接收器类继承子BroadcastReceiver
<intent-filterandroid:priority="10">//添加级别
<actionandroid:name="com.example.testbroadcasetwo.bcone" />
</intent-filter>
</receiver>



Activity中动态注册:

MyReiceiverThree myReiceiver = new MyReiceiverThree();
@Override public void onStart(){
IntentFilter filter =new IntentFilter(Config.BC_THREE_ACTION);
registerReceiver(myReiceiver, filter);
}
@Override protectedvoidonDestroy() {
super.onDestroy(); unregisterReceiver(myReiceiver);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 广播