当我们用Intent传输大数据时,有可能会出现错误:
val intent = Intent(this@MainActivity, Main2Activity::class.java)
val data = ByteArray(1024 * 1024)
intent.putExtra("111", data)
startActivity(intent)
如上我们传递了1M大小的数据时,结果程序就一直反复报如下TransactionTooLargeException错误:
普通的由Zygote孵化而来的用户进程,所映射的Binder内存大小是不到1M的,准确说是
#define BINDER_VM_SIZE ((1*1024*1024) - (4096 *2))
这个限制定义在frameworks/native/libs/binder/processState.cpp类中
1Mb并不是安全上限。因为Binder中可能正在处理其它的传输工作。