Каковы механизмы IPC, доступные в ОС Android?

Кто-нибудь скажет мне, какие все механизмы МПК существуют в андроиде.

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

1) намерения,
2) Связующие.

Solutions Collecting From Web of "Каковы механизмы IPC, доступные в ОС Android?"

IPC – это межпроцессная коммуникация. В нем описывается механизм передачи различных типов компонентов Android.

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

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

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

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

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

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

  • Intents (с включенными пакетами)
  • Связи или посланники с услугой
  • BroadcastReceivers

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

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

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

2. Binders использует Parcels, чтобы сделать IPC очень быстрым.

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

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

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

Надеюсь это поможет 🙂

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

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