Android开发笔记(四十二)Broadcast的生命周期

Broadcast是什么广播的特性广播(Broadcast)用于Android组件之间的灵活通信,它与Activity和Service的区别在于:1、Activity和Service都只能一对一地通信,而Broadcast可以一对多,一人发送广播,多人接收处理;2、对于发送者来说,广播不需要考虑接收者有没有在工作,接收者有在工作则接收广播,不在工作则丢弃广播;3、对于接收者来说
摘要由CSDN通过智能技术生成

Broadcast是什么

广播的特性

广播(Broadcast)用于Android组件之间的灵活通信,它与Activity和Service的区别在于:
1、Activity和Service都只能一对一地通信,而Broadcast可以一对多,一人发送广播,多人接收处理;
2、对于发送者来说,广播不需要考虑接收者有没有在工作,接收者有在工作则接收广播,不在工作则丢弃广播;
3、对于接收者来说,会收到各式各样的广播,所以接收者首先要自行过滤符合条件的,然后才能进行解包处理;
4、通常情况下,Activity和Service都是在线程内部通信,而Broadcast既可用于线程内通信,也可用于线程间通信,还能用于进程间通信;


广播的用途

实际开发中,广播一般有以下用途:
1、适用于在不同代码文件中操纵对方页面控件的场景,比如说FragmentActivity与Fragment代码间通信,以及Activity与Adapter代码间通信;
2、适用于不同线程之间的通信,虽然线程间通信可使用Thread+Handler、AsyncTask等方式,但是广播的适应面显然更广,Android总线通信框架EventBus就是基于Broadcast来构建的;
3、适用于不同进程之间的通信,既可用于不同APP之间的通信,也可用于系统与APP之间的通信;


Broadcast的调用

广播的调用方法

sendBroadcast : 发送广播
registerReceiver : 注册接收器,一般在onStart或者onResume方法中注册
unregisterReceiver : 注销接收器,一般在onStop或者onPause方法中注销


进程内广播与进程间广播

如果广播是在应用之内使用,即不需要跨进程,可以考虑使用LocalBroadcastManager,因为这样更有效率(不需要跨进程通信),而且不用考虑广播开放造成的安全问题(如果其他应用也能收到广播的话)。

进程内广播,推荐使用LocalBroadcastManager类下的registerReceiver和unregisterReceiver方法,代码示例如下:
//注册接收器
LocalBroadcastManager.getInstance(this).registerReceiver(guestReceiver, filter);
//注销接收器
LocalBroadcastManager.getInstance(this).unregisterReceiver(guestReceiver);

进程间通讯,推荐使用Context类下的registerReceiver和unregisterReceiver方法,代码示例如下:
//注册接收器,如在activity使用,可去掉mContext,
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值