BroadcastReciver 和LocalBroadcastManager区别

本文探讨BroadcastReceiver和LocalBroadcastManager的区别。BroadcastReceiver可跨进程通信,但Intent数据大小有限制,通常不超过1MB。广播注册有动态和静态两种,动态注册在Activity关闭后失效,静态注册始终保持开启。可以通过提高自定义BroadcastReceiver优先级拦截短信。LocalBroadcastManager适用于应用内高效通信,更安全且基于Handler实现,避免了Binder通讯的开销。
摘要由CSDN通过智能技术生成

1. 程序A能否接收到程序B的广播?
能,使用全局的BroadCastRecevier能进行跨进程通信,但是注意它只能被动接收广播。此外,LocalBroadCastRecevier只限于本进程的广播间通信。

2. 广播传输的数据是否有限制,是多少,为什么要限制?
Intent在传递数据时是有大小限制的,大约限制在1MB之内,你用Intent传递数据,实际上走的是跨进程通信(IPC),跨进程通信需要把数据从内核copy到进程中,每一个进程有一个接收内核数据的缓冲区,默认是1M;如果一次传递的数据超过限制,就会出现异常。

不同厂商表现不一样有可能是厂商修改了此限制的大小,也可能同样的对象在不同的机器上大小不一样。

传递大数据,不应该用Intent;考虑使用ContentProvider或者直接匿名共享内存。简单情况下可以考虑分段传输。

3. 广播注册一般有几种,各有什么优缺点?
第一种是常驻型(静态注册):当应用程序关闭后如果有信息广播来,程序也会被系统调用,自己运行。

第二种不常驻(动态注册):广播会跟随程序的生命周期。

动态注册

优点: 在android的广播机制中,动态注册优先级高于静态注册优先级,因此在必要情况下,是需要动态注册广播接收者的。

缺点: 当用来注册的 Activity 关掉后,广播也就失效了。

静态注册

优点: 无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值