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