这个问题之前遇到过,但是当时没有多想,网上直接查了资料用了代替方法传递数据了。至于为什么不能传递较大的数据,直到今天开始阅读官方文档才了解。
还是得多阅读官方文档,很多东西官方都给出解释了
我这里就贴出官方文档的解释了。
Binder 事务缓冲区的大小固定有限,目前为 1MB,由进程中正在处理的所有事务共享。由于此限制是进程级别而不是 Activity 级别的限制,因此这些事务包括应用中的所有 binder 事务,例如 onSaveInstanceState,startActivity 以及与系统的任何互动。超过大小限制时,将引发 TransactionTooLargeException。
以上就是官方的解释了。
通俗点说,intent传递数据会存储在Binder事务缓冲区,超过这个大小限制,就会抛出异常。这个缓冲区还是共用的,用的人多了,内存不够,也会抛出异常。