android意图内联数据大小限制

时间:2013-05-06 09:52:56

标签: android android-intent camera

我发现android相机应用程序,当通过意图上的parcelable将图像传回给调用者时,将大小减小到~50k。

搜索以下源代码链接中的下一个文字:限制为50k像素,以便我们可以在意图中返回

源代码链接:Android Stock Camera Source Code

我的问题是,为什么这个限制,以及我可以通过意图传递的数据的实际大小限制是什么?我可以找到论坛讨论这个问题,但Google没有关于限制的真实文档。

1 个答案:

答案 0 :(得分:0)

这与活页夹事务缓冲区有关:

  

在远程过程调用期间,调用的参数和返回值将作为存储在Binder事务缓冲区中的Parcel对象传输。如果参数或返回值太大而不适合事务缓冲区,则调用将失败并且将抛出TransactionTooLargeException

     

Binder事务缓冲区具有有限的固定大小,当前为1Mb,由进程正在进行的所有事务共享。因此,即使大多数单个事务的大小适中,当有许多事务正在进行时,也会抛出此异常。 1

如果超过Binder事务缓冲区限制,您将获得TransactionTooLargeException

限制应该是1MB,但它因设备而异,从不到512KB到几乎完整的1MB。

Android Documentation