Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
IPC in Android
Search
Technokratos
July 07, 2018
Programming
56
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IPC in Android
Technokratos Android Meetups #1 by Rodionov Sergey
Technokratos
July 07, 2018
More Decks by Technokratos
See All by Technokratos
AOP and AspectJ
meetups
0
61
Material Design 2.0
meetups
0
72
Other Decks in Programming
See All in Programming
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
32k
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
880
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
300
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
590
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
KATA
mclloyd
PRO
35
16k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
310
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
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