广播

1,383 阅读1分钟

问题

广播传输的数据是否有限制,是多少,为什么要限制?

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

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

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

BroadcastReceiver与LocalBroadcastReceiver的区别

通信范围的比较: BroadcastReceiver全局广播,可以接受App应用和系统间的广播,LocalBroadcastReceiver只能接受App应用.

通信效率: Local用的是Handler安全性更好,运行效率更高.Broad核心实现是Binder,是全局广播,可以跨进程通信.运行效率没有本地广播高效。

注册方式: 本地广播只能动态注册,全局广播可以静态注册也可以动态注册.