Кто-нибудь, пожалуйста, скажите мне, каковы все механизмы IPC, которые присутствуют в Android.
Насколько мне известно, это:
- Намерения
- Связующие
Кто-нибудь, пожалуйста, скажите мне, каковы все механизмы IPC, которые присутствуют в Android.
Насколько мне известно, это:
IPC — это межпроцессное взаимодействие. В нем описываются механизмы, используемые различными типами компонентов Android для связи друг с другом.
1) Intents
— это сообщения, которые компоненты могут отправлять и получать. Это универсальный механизм передачи данных между процессами. С помощью намерений можно запускать службы или действия, вызывать широковещательные приемники и так далее.
2) Bundles
— это объекты данных, которые передаются. Это похоже на сериализацию объекта, но намного быстрее на Android. Пакет можно прочитать из намерения с помощью метода getExtras()
.
3) Binders
— это сущности, которые позволяют действиям и службам получать ссылку в другую службу. Он позволяет не просто отправлять сообщения сервисам, а напрямую вызывать у них методы.
universal mechanism
реализовано средствами ...чего? (ожидая чего-то среди строк системных вызовов ядра, расширений для java, найденных в dalvik и т. д.)
- person n611x007; 24.04.2015
different types of android components
или разные типы процессов Android?
- person Yousha Aleayoub; 10.09.2016
В Android существует три типа механизма IPC:
Все ответы хороши и лаконичны в этом посте. Но я хотел бы осветить, какой механизм IPC нам следует использовать. Прежде всего, IPC
означает Inter Process communication
, где два приложения или процесса будут взаимодействовать друг с другом, передавая между собой некоторые данные. Поскольку Android предназначен для встроенных и небольших устройств, мы не должны использовать serialization
для IPC
, вместо этого мы можем использовать BINDERs
, который внутри использует parcels
. Parcel
— это своего рода облегченная сериализация с использованием концепции общей памяти.
Существует много различий между Binder IPC и Serialization IPC:
1. Сериализацию очень сложно использовать во встроенных устройствах, связь будет очень медленной.
2. Binders использует Parcels для очень быстрого IPC.< br>
3. Binders внутренне использует концепцию общей памяти, которая использует меньше памяти при совместном использовании данных между двумя процессами.
Итог: Binders
использует меньше памяти и довольно быстро, поскольку использует посылки. Serialization
очень тяжелый, требует времени для отправки и получения данных, а также занимает больше памяти по сравнению с биндерами.
Примечание. Для передачи данных между действиями, службами и получателями используйте только пакеты. Не используйте ни сериализацию, ни связыватели. Связыватели специально используются только для служб связывателей, где будут взаимодействовать 2 процесса.
Надеюсь, это поможет :)
Как указано на странице разработчиков Android, механизмы IPC в Android включают:
Существует три типа механизмов IPC:
Другим решением, которое сработало для меня, было использование внутренних файлов:
https://developer.android.com/training/data-storage#filesInternal
Запись из одного процесса, закрытие файла, чтение из другого.