android中的广播

1 广播的定义

用于程序之间传消息的机制

3、Anroid为什么要这样设计?

    大大减少开发工作量和开发周期

    作为开发者,只需要掌握BroadcastReceiver

普通广播 (Normal broadcast)

 - 所有监听该广播接受者都可以监听到该广播

 - 同级别接收先后顺序是随机的(无序)

 - 级别低的后收到广播

 - 接收器不能截断广播的继续传播,也不能处理广播

 - 同级别动态注册高于静态注册

有序广播 (Oredered broadcast)

 - 按照接收者的优先顺序来接收广播,优先级别在intent-filter中的priority中声明,-1000到1000之间,值越大优先级越高,可以终止广播的继续传播,接受者可以修改intent的内容。

 - 同级别接收顺序是随机的

 - 级别低的后收到

 - 能截断广播的继续传播,高级别的广播接收器接收广播后能决定时候截断。

 - 能处理广播

 - 同级别动态注册高于静态注册

异步广播 (粘滞性滞留广播) ps:已被弃用

 - 不能处理结果给下一个接收者,无法终止广播。

 - 一直存在

 - 可以先发送广播,再注册接收器

 - 需要在清单文件添加android.permission.BROADCAST_STICKY权限

BroadReceiver生命周期只有十秒左右,不能直接执行耗时操作,不然会出现ANR(应用程序无响应),也不能用子线程来做,因为每次广播来的时候都会创建一个Reveiver对象,并且调用onReceiver,执行完之后 ,对象会立刻被销毁,子线程也没了
    要做耗时操作的话,应该通过发送Intent给Service,由Service来完成。
    动态注册广播接受者的话要在Destory回调事件进行unregister

 

两者及接收广播的区别:

1 动态注册的广播要快于静态注册的广播,不管注册还是的优先级设置多高 不管动态的优先级有多低

2 动态的广播不是常驻广播 ,也就是说国安博跟着activity的生命周期 注意在activity结束前移除广播接收器

静态注册是常驻行 也就是说关闭程序后 如果信息广播来随actitivity 的生命周期。注意:在 activity 结束前  移除广播接收器。

3 在同一个优先级下,谁先启动的快,谁将先接收到广播

动态的注册代码:

UpdateBroadcast   broadcast=new  UpdateBroadcast();

IntentFilter   filter=new IntntFileter(com。UntiUPdate“);

registerReceiver(broadcast,filter);

静态注册代码在配置文件中添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值