Кто-нибудь, пожалуйста, скажите мне, каковы все механизмы IPC, которые присутствуют в Android.
Насколько мне известно, это:
- Intents
- Связующие
Кто-нибудь, пожалуйста, скажите мне, каковы все механизмы IPC, которые присутствуют в Android.
Насколько мне известно, это:
В Android существует три типа механизма IPC:
IPC - это межпроцессное взаимодействие. Он описывает механизмы, используемые различными типами компонентов Android для связи друг с другом.
1) Intents
- это сообщения, которые компоненты могут отправлять и получать. Это универсальный механизм передачи данных между процессами. С помощью намерений можно запускать службы или действия, вызывать приемники вещания и так далее.
2) Bundles
- это объекты данных, которые передаются через. Это похоже на сериализацию объекта, но намного быстрее на Android. Пакет можно прочитать из намерения с помощью getExtras()
.
3) Binders
- это субъекты, которые позволяют действиям и услугам получать ссылку на другую услугу. Это позволяет не просто отправлять сообщения службам, но и напрямую вызывать методы для них.
Как написано на странице Android Developers, механизмы IPC в Android включают:
Все ответы хороши и лаконичны в этом посте. Но я хотел бы осветить, на какой механизм IPC я должен использовать. Прежде всего IPC
означает Inter Process communication
, где два приложения или процессы будут связываться друг с другом, передавая некоторые данные между ними. Поскольку андроид предназначен для встроенных и небольших устройств, мы не должны использовать serialization
для IPC
, вместо этого мы можем использовать BINDERs
, который использует parcels
внутри себя. Parcel
- это своего рода облегченная сериализация с использованием концепции общей памяти.
Существует много различий между Binder IPC и Serialization IPC:
1. Сериализация очень тяжелая для использования во встроенных устройствах, связь будет очень медленной. 2.. Связывание использует пакеты, чтобы сделать IPC очень быстро. 3.. Связыватели внутренне используют концепцию общей памяти, которая использует меньше памяти при совместном использовании данных между двумя процессами.
Bottom Line: BINDERs
использует меньше памяти и довольно быстро, так как использует паркеты. serialization
очень тяжелый, требуется время для отправки и получения данных, а также требуется больше памяти по сравнению с вложениями.
Примечание. Для передачи данных между действиями, службами и получателями используйте только Связки. Не используйте ни сериализацию, ни связывание. Связывающие устройства специально используются только для связующих сервисов, в которых будут взаимодействовать 2 процесса.
Надеюсь, что это поможет:)
Существует три типа механизмов IPC: