Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IPC in Android
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Technokratos
July 07, 2018
Programming
0
50
IPC in Android
Technokratos Android Meetups #1 by Rodionov Sergey
Technokratos
July 07, 2018
Tweet
Share
More Decks by Technokratos
See All by Technokratos
AOP and AspectJ
meetups
0
58
Material Design 2.0
meetups
0
70
Other Decks in Programming
See All in Programming
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
150
Oxlint JS plugins
kazupon
1
700
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
960
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
250
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
140
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
630
今から始めるClaude Code超入門
448jp
7
8.4k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
240
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
110
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
170
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
130
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.5k
How to Talk to Developers About Accessibility
jct
2
130
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
sira's awesome portfolio website redesign presentation
elsirapls
0
140
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Bash Introduction
62gerente
615
210k
The Limits of Empathy - UXLibs8
cassininazir
1
210
Test your architecture with Archunit
thirion
1
2.1k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Transcript
Межпроцессное взаимодействие (IPC) в Android
В чем разница между процессом и потоком?
Процесс - самостоятельная единица, имеющая отдельное адресное пространство, id и
в числе прочего минимум 1 поток - основной.
Поток - сущность внутри процесса, которая может быть запланирована для
выполнения. Кроме этого потоки внутри процесса имеют общее адресное пространство.
Когда 1 процесса недостаточно?
Преимущества - Больше памяти - Повышение производительности
Недостатки: - Затраты ресурсов системы на маршалинг - Контроль за
жизненным циклом процесса - Больше кода
Механизмы взаимодействия - Intent - Broadcastreceiver - Binder/AIDL/Messenger
Intent Универсальный механизм передачи данных. Отправка данных между компонентами системы.
Broadcastreceiver Получение широковещательных сообщений из различных компонентов системы
Как устроено “под капотом”
Binder Процесс-сервер определяет удаленный интерфейс, с помощью класса Binder, а
потоки в процессе - клиенте получают доступ к удаленному интерфейсу через этот удаленный объект.
Этапы взаимодействия
1. Декомпозиция метода и данных, также называемый маршалинг
2. Передача информации, прошедшей маршалинг в удаленный процесс
3. Восстановление информации в удаленном процессе (демаршалинг)
4. Обработка и возврат информации в удаленный процесс
None
None
None
Язык AIDL AIDL - это контракт взаимодействия между локальным и
удаленным процессом. Описание формируется в файле .aidl. После компиляции формируется java файл.
None
Работа под “капотом” Класс AIDL определяет 2 внутренних класса: -
Proxy - Stub
None
Синхронные вызовы методов
Процесс-сервер
None
Процесс-клиент
Асинхронные вызовы методов
- Реализуется с помощью ключевого слова ONEWAY - У асинхронных
методов тип возвращаемого значения должен быть void
Направление данных - in - inout - out
in in - объект передается от клиента к сервису только
для ввода. Все изменения, внесенные в объект в службе не отразятся на клиенте.
inout inout - данные копируются, если вносятся изменения в службе,
то это также отражается на клиенте.
out out - объект не имеет соответствующих данных и будет
заполнен службой и возвращен в качестве ответа.
Процесс-сервер
None
Процесс-клиент
None
Объект Messenger - Использует фреймворк Binder для передачи ссылки на
процесс-клиент, и для отправки объектов сообщений Message. - Основан на использовании механизма Handler/Looper - Сообщения передаются последовательно
Работа под “капотом” 1. Передача ссылки на объект Messenger в
процесс-клиент 2. Отправка сообщений в процесс-сервер. 3. После получения клиентом ссылки на Messenger сервера процедура отправки сообщений может повторяться многократно
None
Итоги 1. Основные преимущества IPC 2. Компоненты для реализации IPC
3. Механизмы взаимодействия “под капотом” 4. Реализация механизмов взаимодействия
Спасибо за внимание Ссылка на репозиторий: https://github.com/putnik-busy/ IPCDemo