Старый вопрос (и, вероятно, не отслеживаемый автором), но на который стоит ответить:
A) Все механизмы IPC на основе файловой системы или файловой системы (особенно каналы) нельзя использовать из-за отсутствиядоступного для записи каталога, где все процессы могут mkfifo / создать представление файловой системы / сокета своего порта IPC (несмотря на / dev / socket, который используется для системных процессов, например, rile, zygote и их аналог).
B) Ни один из предложенных механизмов не имеет возможности «определения местоположения службы», которая требуется для Android.В UNIX есть RPC portmapper, и Android нуждается в аналогичной функциональности.Введите: ServiceManager, который может использовать связыватель для регистрации в качестве диспетчера контекста, для регистрации / поиска дескрипторов службы на лету
C) Существует серьезная потребность в сериализации - будь то намерения или другие сообщения.Binder предоставляет абстракцию посылки, которую Parcel.java может использовать для маршалинга данных.
D) У SysV есть другие проблемы, помимо ответа г-на Ламбада, которые являются более важными, особенно условия гонки и отсутствие разрешения.
E) Очереди сообщений и каналы не могут передавать дескрипторы.Сокеты домена UNIX могут, но не могут использоваться из-за (A) (опять же, если вы не root / system, например, zygote, rild, installd ..)
F) Binder действительно легкий, иимеет встроенные механизмы авторизации.Он также имеет изящные функции, такие как пробуждение процесса получателя, а также совместное использование памяти, которого другие механизмы просто не имеют.(и помните, нет mmap (2) из-за проблемы с файлами в (A) для именованных отображений).
и - давайте не будем забывать
G) Binder был запущен в Palm (ах, ностальгия) (см. OpenBinder).Экс-палмеры добрались до Android и принесли с собой свой код.