Intent传输数据的大小有限制吗?

Android开发人员都知道,Intent适用于在不同的Activity之间传递数据,包括参数、字符串、以及序列化的对象等。那么Intent传输数据的大小有限制吗?

且被限制在1MB左右,不同机型大小不同。当传输的数据超过这个限制,程序就会出现闪退、停止运行等异常。也就是说,如果使用Intent中的bundle来传输数据,不要用bundle传递大量数据。

因为在Intent 中的 Bundle 是使用 Binder 机制进行数据传送的, 数据会写到 Binder 缓冲区域;Binder 的缓冲区是有大小限制的, 有些 ROM1M, 有些 ROM2MBinder 本身就是为了进程间频繁的通信所设计的, 并不是为了拷贝大量数据

解决办法

  • 减少传输数据量
  • 如果非 ipc 就很简单了, static 变量, eventBus 等类似的通信工具;
  • 如果是 ipc, 一定要一次性传大文件, 可以用 file 或者 socket

Thanks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦否

文章对你有用?不妨打赏一毛两毛

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值