android 本地广播 可以静态注册码,本文主要是介绍Android中BroadcastReceiver与LocalBroadcastReceiver的区别,即本地广播和全局广播的区别,下面则从通信...

本文主要是介绍Android中BroadcastReceiver与LocalBroadcastReceiver的区别,即本地广播和全局广播的区别,下面则从通信范围,是否跨进程传递,注册方式和接收方式等方面进行逐步分析。

一、通信息范围的比较1、LocalBroadcastReceiver即本地广播,而 BroadcastReceiver 是 全局广播。

2、LocalBroadcastReceiver只能接收来自本应用App发送的广播,并且它只能用于应用内的通信,所以它的安全性更好,但是通信范围比较小,仅局限于App应用内;而 BroadcastReceiver它不仅针对App内的广播有效,而且对App应用之间的广播通信、App应用和系统间的广播通信也有效,它的通信范围更大。

二、通信效率的比较1、LocalBroadcastManager的核心实现其实还是 Handler,因此它是应用内的通信,自然安全性更好,运行效率更高。

2、而 BroadcastReceiver 是全局广播,可以跨进程通信,范围更广,从而导致它的运行效率没有本地广播高效,毕竟一个是本地的通信,一个是跨进程的通信方式,效率肯定相对较低点,但对于实时性不高的应用场景我们可以忽略不计。

三、注册方式的比较1、本地广播不能用静态注册的方式,只能采用动态注册的方式。

2、全局广播可以用静态注册的方式,也可以采用动态注册的方式。

四、注册代码的比较1、本地广播注册代码

// 添加注册的意图

IntentFilter filter = new IntentFilter();

filter.addAction(ACTION_LOCAL_SEND);

LocalBroadcastManager.getInstance(this).registerReceiver(mLocalBroadcastReceiver, filter);

2、全局广播注册代码

IntentFilter filter = new IntentFilter();

// 添加注册的意图

filter.addAction(ACTION_ALL_SEND);

getBaseContext().registerReceiver(mBroadcastReceiver, filter);

五、取消注册代码的比较1、本地广播取消注册代码

if (mLocalBroadcastReceiver != null) {

LocalBroadcastManager.getInstance(this).unregisterReceiver(mLocalBroadcastReceiver);

}

2、全局广播取消注册代码

if (mBroadcastReceiver != null) {

getBaseContext().unregisterReceiver(mBroadcastReceiver);

}

六、发送广播代码的比较1、本地广播发送代码

Intent intent = new Intent(ACTION_LOCAL_SEND);

Bundle extras = new Bundle();

extras.putString(KEY_MSG, "book_local");

intent.putExtras(extras);

LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

2、全局广播发送代码

Intent intent = new Intent(ACTION_ALL_SEND);

Bundle extras = new Bundle();

extras.putString(KEY_MSG, "book_all");

intent.putExtras(extras);

getBaseContext().sendBroadcast(intent);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值