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
Technokratos
July 07, 2018
Programming
0
47
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
64
Other Decks in Programming
See All in Programming
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
340
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
35
11k
MCP連携で加速するAI駆動開発/mcp integration accelerates ai-driven-development
bpstudy
0
220
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
1
550
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
ucchiii43
0
240
AI Ramen Fight
yusukebe
0
120
What's new in Adaptive Android development
fornewid
0
130
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
100
PHPカンファレンス関西2025 基調講演
sugimotokei
6
1k
MCPで実現できる、Webサービス利用体験について
syumai
7
2.3k
リッチエディターを安全に開発・運用するために
unachang113
1
330
「次に何を学べばいいか分からない」あなたへ──若手エンジニアのための学習地図
panda_program
3
690
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
How GitHub (no longer) Works
holman
314
140k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Balancing Empowerment & Direction
lara
1
520
Designing Experiences People Love
moore
142
24k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Typedesign – Prime Four
hannesfritz
42
2.7k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
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