IPC. Межпроцессное взаимодействие, AIDL

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 под капотом?

  1. Генерирует Stub (серверная часть) и Proxy (клиентская часть)
  2. Создаёт IPC-канал через Binder
  3. Автоматически сериализует/десериализует данные (через Parcel)

Опубликовано

в

от

Метки: