问题
广播传输的数据是否有限制,是多少,为什么要限制?
Intent在传递数据时是有大小限制的,大约限制在1MB之内,你用Intent传递数据,实际上走的是跨进程通信(IPC),跨进程通信需要把数据从内核copy到进程中,每一个进程有一个接收内核数据的缓冲区,默认是1M;如果一次传递的数据超过限制,就会出现异常。
不同厂商表现不一样有可能是厂商修改了此限制的大小,也可能同样的对象在不同的机器上大小不一样。
传递大数据,不应该用Intent;考虑使用ContentProvider或者直接匿名共享内存。简单情况下可以考虑分段传输。
BroadcastReceiver与LocalBroadcastReceiver的区别
通信范围的比较: BroadcastReceiver全局广播,可以接受App应用和系统间的广播,LocalBroadcastReceiver只能接受App应用.
通信效率: Local用的是Handler安全性更好,运行效率更高.Broad核心实现是Binder,是全局广播,可以跨进程通信.运行效率没有本地广播高效。
注册方式: 本地广播只能动态注册,全局广播可以静态注册也可以动态注册.