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
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
CSC307 Lecture 08
javiergs
PRO
0
670
Architectural Extensions
denyspoltorak
0
270
高速開発のためのコード整理術
sutetotanuki
1
390
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
3
300
Vibe codingでおすすめの言語と開発手法
uyuki234
0
220
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
20
6.7k
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
200
Basic Architectures
denyspoltorak
0
660
MUSUBIXとは
nahisaho
0
130
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
680
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
230
My Coaching Mixtape
mlcsv
0
46
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
640
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Rails Girls Zürich Keynote
gr2m
96
14k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
400
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
730
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
64
A designer walks into a library…
pauljervisheath
210
24k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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