![c3ad2272b2a77f6f30968079b89a1b42.png](https://i-blog.csdnimg.cn/blog_migrate/812ff7568c1506d3986809f19ddfab3b.jpeg)
一、序
作为 Android 开发,日常 Coding 时,最频繁的操作应该就是操作 App 内的一系列 Activity。而在 Activity 间传递数据,就需要借助 Intent。
不少资料中写到,Intent 在 Activity 间传递基础类型数据或者可序列化的对象数据。但是 Intent 对数据大小是有限制的,当超过这个限制后,就会触发 TransactionTooLargeException 异常。
那么今天就来聊聊 Intent 传递大数据时,为什么会抛异常,以及如何解决它。
二、为什么会出现异常?
2.1 异常原因
Intent 传递大数据,会出现 TransactionTooLargeException 的场景,这本身也是一道面试题,经常在面试中被问到。
![462244881865f81914d8ab0db6107ac6.png](https://i-blog.csdnimg.cn/blog_migrate/e777f908a1714cda692846841e052cf1.jpeg)
其实这个问题,如果遇到了,查查文档就知道了。
在 TransactionTooLargeException(https://developer.android.com/reference/android/os/TransactionTooLargeException.html) 的文档中,其实已经将触发原因详细说明了。
简单来说,Intent 传输数据的机制中,用到了 Binder。Intent 中的数据,会作为 Parcel 被存储在 Binder 的事务缓冲区(Binder transaction buffer)中的