2016-07-04 39 views
2

我正在制作使用Binder相互通信的小型Android应用程序。Android IPC最大交易大小?

据我所知,Android活页夹的最大交易大小(1MB)。例如,当应用程序尝试使用Binder事务发送大于1MB的消息时,会引发TransactionTooLargeException

我不明白为什么这是有限的。是否有理由限制最大交易规模? Linux SOCK_STREAM也是IPC,但它没有限制。

是否有任何合理的理由限制?看起来Android的文档没有解释为什么他们将事务大小限制在1MB('Binder事务缓冲区有一个固定大小的限制',那为什么它们限制缓冲区?)。

如果框架没有限制IPC尺寸,是否有任何关键的情况?据我所知,即使没有对最大IPC尺寸的限制,Linux也能很好地工作。

回答

0

限制是阻止使用Binder传输大量数据。特别是在较旧的设备上,这样做可能会影响其他应用程序,更重要的是,系统本身的正常运行。许多系统组件(如用户界面,服务等)都严重依赖于Binder。

尽管其他形式的IPC可能设计用于传输大量数据,但Binder并不是这样。相反,Android提供了其他方法来完成这个任务,比如通过Binder(例如,文件描述符,URI)向数据发送一个能力。

+1

但为什么是1MB?是否有1MB限制的理论基础?或者这只是一个假设? – DeanStark