Ответ
AIDL (Android Interface Definition Language) — это язык описания интерфейсов для межпроцессного взаимодействия (IPC) в Android. Он позволяет сервису и клиенту общаться через границы процессов, генерируя boilerplate-код автоматически.
Пример:
- Создаем
.aidlфайл:
// IMyService.aidl
interface IMyService {
int add(int a, int b);
}
- Реализуем интерфейс в сервисе:
class MyService : Service() {
private val binder = object : IMyService.Stub() {
override fun add(a: Int, b: Int) = a + b
}
override fun onBind(intent: Intent) = binder
}
- Подключаемся из клиента через
ServiceConnection.
Нюансы:
- Подходит только для сложных IPC (для простых случаев используйте
MessengerилиIntents) - Все методы AIDL синхронные
- Поддерживает примитивы, String, List, Map, Parcelable
- Требует явного объявления
in/out/inoutпараметров для Parcelable