Я делаю небольшие приложения для Android, которые взаимодействуют друг с другом с помощью Binder.
Насколько я знаю, Android Binder имеет максимальный размер транзакции (1 МБ). Например, TransactionTooLargeException
возникает, когда приложения пытаются отправить сообщения размером более 1 МБ с помощью транзакции Binder.
Я не могу понять, почему это ограничено. Есть ли причина ограничивать максимальный размер транзакции? Linux SOCK_STREAM
тоже IPC, но у него нет ограничений.
Есть ли разумная причина для этого ограничения? Кажется, документы Android не объясняют, почему они ограничивают размер транзакции до 1 МБ («Буфер транзакций Binder имеет ограниченный фиксированный размер», тогда почему они ограничивают буфер?).
И есть ли критический случай, если фреймворк не ограничивал размер IPC? Насколько я знаю, Linux хорошо работает даже без ограничения максимального размера IPC.