Что такое AIDL

«Что такое AIDL» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

AIDL (Android Interface Definition Language) — это язык описания интерфейсов для межпроцессного взаимодействия (IPC) в Android. Он позволяет сервису и клиенту общаться через границы процессов, генерируя boilerplate-код автоматически.

Пример:

  1. Создаем .aidl файл:
// IMyService.aidl
interface IMyService {
    int add(int a, int b);
}
  1. Реализуем интерфейс в сервисе:
class MyService : Service() {
    private val binder = object : IMyService.Stub() {
        override fun add(a: Int, b: Int) = a + b
    }
    override fun onBind(intent: Intent) = binder
}
  1. Подключаемся из клиента через ServiceConnection.

Нюансы:

  • Подходит только для сложных IPC (для простых случаев используйте Messenger или Intents)
  • Все методы AIDL синхронные
  • Поддерживает примитивы, String, List, Map, Parcelable
  • Требует явного объявления in/out/inout параметров для Parcelable