Может ли Messenger (легкая альтернатива AIDL) использоваться для связи между приложениями? - PullRequest
6 голосов
/ 30 марта 2011

Небольшой вопрос: в документации для Android очень четко сказано, что Messenger является альтернативой для AIDL для IPC (межпроцессное взаимодействие).Они никогда не говорят явно, распространяется ли это на процессы, выполняющиеся в разных приложениях или только в одном приложении.Я сильно подозреваю первое, но хотел проверить.

Спасибо!Jan

Ответы [ 2 ]

8 голосов
/ 30 марта 2011

AIDL действительно используется только для межпроцессного IPC. Несмотря на то, что AIDL можно использовать для внутренней коммуникации, он ничего не покупает и накладывает ограничения на ваши Binder реализации.

Более того, в подавляющем большинстве случаев одно приложение не имеет более одного процесса. У большинства приложений нет особых причин иметь несколько процессов.

Messenger, createPendingResult(), ResultReceiver, частная широковещательная рассылка Intents - все это позволяет службе взаимодействовать с клиентом через границы процесса.

0 голосов
/ 04 июля 2017

Messenger для внутреннего использования использует AIDL, его можно использовать в нескольких приложениях. В соответствии с документацией для Android, служба Messenger может использоваться для связи между двумя процессами, но она не ограничивает ее в одном приложении. Процессы могут находиться в одном приложении или в другом приложении. .

Messenger следует использовать, если мы хотим, чтобы запросы обрабатывались последовательно, поскольку они поступают в сообщения в очереди обработчика, и они обрабатываются один за другим, тогда как в AIDL все запросы будут обрабатываться одновременно, и ответственность за поддержание безопасности потока становится обязанностью разработчика. .

...