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

广播有三种:

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);
 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值