Android
开发人员都知道,Intent
适用于在不同的Activity
之间传递数据,包括参数、字符串、以及序列化的对象等。那么Intent
传输数据的大小有限制吗?
且被限制在1MB
左右,不同机型大小不同。当传输的数据超过这个限制,程序就会出现闪退、停止运行等异常。也就是说,如果使用Intent中的bundle
来传输数据,不要用bundle
传递大量数据。
因为在Intent
中的 Bundle
是使用 Binder
机制进行数据传送的, 数据会写到 Binder
缓冲区域;Binder
的缓冲区是有大小限制的, 有些 ROM
是 1M
, 有些 ROM
是 2M
。Binder
本身就是为了进程间频繁的通信所设计的, 并不是为了拷贝大量数据。
解决办法
- 减少传输数据量
- 如果非
ipc
就很简单了,static
变量,eventBus
等类似的通信工具; - 如果是
ipc
, 一定要一次性传大文件, 可以用file
或者socket
;
Thanks