broadcastReceiver

BroadcastReceiver

  • 广播的注册和服务很类似,但是不希望一直处于监听状态,于是就需要动态的注册和取消注册广播了。
  • 利用regristReceiver方法进行注册。unregristReceiver方法注销注册。
  • 广播注册传值在android5.0之前是可以像Intent那样,利用一个action隐式传值的,但是在5.0之后只能用显示传值了。
  • 一般的注册的方法是:sendBrocast方法发送广播,

BroadcastReceiver优先级

  • 可以在intent-filter里面设置优先级,数字越大,优先级越高,priority设置优先级。
  • abortBroadcast()可以中断发送广播,但是不能中断sendBroadcast()方法,可以中断sendOrderbroadcast()方法。

广播接收器注册一共有两种形式 : 静态注册和动态注册.

  • 两者及其接收广播的区别:
  • 1.动态注册的广播 永远要快于 静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低>\
  • 2.动态注册广播不是 常驻型广播 ,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。
    静态注册是常驻型 ,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。
  • 3.在同一个优先级下,谁先启动的快,谁将先接收到广播.
    动态注册代码:
UpdateBroadcast  broadcast= new UpdateBroadcast();
IntentFilter filter = new IntentFilter("com.unit.UPDATE");
registerReceiver(broadcast, filter);
静态注册代码(在配置文件中添加):

           
               
               
           

广播的类型

普通广播的发送和接收:
sendBroadcast(intent);

[mw_shl_code=java,true]
           




[/mw_shl_code]
1,他决定该广播的级别,级别数值是在-1000到1000之间,值越大,优先级越高;
2,同级别接收是先后是随机的;级别低的收到广播;
3,在android系统中只要监听该广播的接收者,都能够收到sendBroadcast(intent)发出的广播;
4,不能截断广播的继续传播,
5,实验现象,在这个方法发来的广播中,代码注册方式中,收到的广播的先后和注明优先级最高的他们的先后是随机。如果都没有优先级,代码注册收到为最先。

有序广播的发送和接收:
sendOrderedBroadcast(intent,receiverPermission);
sendOrderedBroadcast(intent,receiverPermission, resultReceiver,
       scheduler,initialCode, initialData, initialExtras)
receiverPermission这是权限,一个接收器必须持以接收您的广播。如果为null,不经许可的要求。 
resultReceiver您自己BroadcastReceiver来当作最后的广播接收器。 
调度自定义处理程序,用以安排resultReceiver回调;如果为null将语境中的主线程举行。 
initialCode一种结果代码的初始值。通常为Activity.RESULT_OK。这个值是-1;为其他int型也可以,如0,1,2; 
initialData一种结果数据的初始值。通常情况下为空,是String类型;
initialExtras一种结果额外的初始值。通常情况下为空,是Bundle;
1,  该广播的级别有级别之分,级别数值是在-1000到1000之间,值越大,优先级越高;
2,  同级别接收是先后是随机的,再到级别低的收到广播;
3,  同级别接收是先后是随机的,如果先接收到的把广播截断了,同级别的例外的接收者是无法收到该广播的。(abortBroadcast())
4,能截断广播的继续传播,高级别的广播收到该广播后,可以决定把该钟广播是否截断掉。
5,实验现象,在这个方法发来的广播中,代码注册方式中,收到广播先后次序为:注明优先级的、代码注册的、没有优先级的;如果都没有优先级,代码注册收到为最先。


异步广播的发送和接收:
sendStickyBroadcast(intent);
当处理完之后的Intent,依然存在,直到你把它去掉。
发这个广播需要权限

注意点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值