Какие механизмы IPC доступны в ОС Android? - PullRequest
59 голосов
/ 21 апреля 2011

Подскажите, пожалуйста, что это за механизмы IPC, присутствующие в Android.

Насколько мне известно:

  1. Intents
  2. Binders

Ответы [ 5 ]

84 голосов
/ 21 апреля 2011

IPC - межпроцессное взаимодействие. Он описывает механизмы, используемые различными типами компонентов Android для связи друг с другом.

1) Intents - это сообщения, которые компоненты могут отправлять и получать. Это универсальный механизм передачи данных между процессами. С помощью намерений можно запускать службы или действия, вызывать приемники вещания и т. Д.

2) Bundles - объекты данных, которые передаются через. Это похоже на сериализацию объекта, но намного быстрее на Android. Пакет можно прочитать из намерения с помощью метода getExtras().

3) Binders - это объекты, которые позволяют действиям и услугам получать ссылку на другую услугу. Это позволяет не просто отправлять сообщения службам, но и напрямую вызывать методы для них.

35 голосов
/ 09 мая 2011

Существует три типа механизма IPC в Android:

  1. Содержимое (вместе с пачками)
  2. Биндеры
  3. ASHMEM (анонимная общая память). Основное различие между общей памятью Linux и этой общей памятью заключается в том, что в Linux другие процессы не могут освободить общую память, но здесь, если другим процессам требуется память, эта память может быть освобождена ОС Android.
22 голосов
/ 07 февраля 2014

Как написано на странице разработчиков Android , механизмы IPC в Android включают в себя:

  • Содержимое (включая комплекты)
  • Связующие или мессенджеры с услугой
  • BroadcastReceivers
15 голосов
/ 17 февраля 2016

Все ответы хорошие и краткие в этом посте.Но я хотел бы осветить, какой механизм IPC я должен использовать .Прежде всего IPC означает Inter Process communication, где два приложения или процессы будут взаимодействовать друг с другом, передавая некоторые данные между ними.Поскольку android предназначен для встроенных и небольших устройств, мы не должны использовать serialization для IPC, скорее мы можем использовать BINDERs, который внутренне использует parcels.Parcel является своего рода облегченной сериализацией с использованием концепции общей памяти.

Существует много различий между Binder IPC и Serialization IPC:

1. Сериализация очень сложна для использования во встраиваемых устройствах, связь будет очень медленной.

2. Связыватели используют Parcels для очень быстрого IPC.

3. Биндерс внутренне использует концепцию Shared memory, которая использует меньше памяти при совместном использовании данных между двумя процессами.

Итог: Binders использует меньше памяти и довольно быстроиспользует посылки.Serialization очень тяжелый, требует времени для отправки и получения данных, а также занимает больше памяти, чем связующие.

Примечание: Для передачи данных между операциями, службами и получателями используетсятолько Связки .Не идите ни на сериализацию, ни на связующие.Связыватели специально используются только для служб связывателей, где будут взаимодействовать 2 процесса.

Надеюсь, это поможет:)

5 голосов
/ 17 сентября 2012

Существует три типа механизмов IPC:

  1. обработчик
  2. связующее
  3. AIDL
...