IPC (Inter-Process Communication) — это способ, с помощью которого два разных процесса обмениваются данными.
Это критично, потому что:
- В Android каждое приложение живёт в своём изолированном процессе (sandbox)
- Но иногда нужно, чтобы процессы общались (например, App ↔ System Service)
Примеры IPC в Android
| Где используется | Пример |
|---|---|
| Системные сервисы | LocationManager, NotificationManager |
| Между приложениями | Приложение <=> Сервис другого приложения |
| AIDL-сервисы | Платёжные SDK, медиа-сервисы |
| Binder | Основной механизм передачи данных |
Механизм: Android Binder
Вся IPC в Android работает через Binder — это:
- Низкоуровневая реализация (C++)
- Использует дескрипторы, сериализацию, трансферы файлов/объектов
- Позволяет создать «удалённый вызов метода»:
Приложение вызывает метод, который фактически исполняется в другом процессе
Binder — это основа всего:
ActivityManagerServiceMediaServiceInputMethodManager- Даже
Logcatработает через Binder
Что такое AIDL?
AIDL (Android Interface Definition Language) — это способ описать интерфейс для IPC между процессами.
Ты создаёшь .aidl-файл, Android генерирует Binder-интерфейсы, а дальше ты пишешь реализацию сервиса и клиента.
Что делает AIDL под капотом?
- Генерирует
Stub(серверная часть) иProxy(клиентская часть) - Создаёт IPC-канал через Binder
- Автоматически сериализует/десериализует данные (через
Parcel)