Чтобы избежать бесполезного ответа о том, как реализовать AIDL в своем собственном проекте, я понимаю, как использовать AIDL в вашем собственном проекте.Как именно Android связывает AIDL-интерфейс и удаленную службу?
Для меня непонятно, как он используется в исходном коде Android?
Например, в пакете android.media имеется интерфейс IAudioService AIDL. И есть java-файл AudioService. И есть много примеров, где интерфейс определен в IInterfaceServiceName.aidl, а реализация - в InterfaceServiceName.java. Итак, я думал, что внутренности AIDL ищут Сервис с именем без первого капитала I, а затем используют его. Однако эта теория была снесена IWifiManager и WifiService.
Все эти реализации AIDL, однако, разделяют одну вещь - все они расширяют класс IInterfaceName.Stub. Итак, это означает, что внутренние объекты AIDL ищут классы, расширяющие IInterfaceName.Stub? Но что, если есть несколько классов, расширяющих его? И эти классы вообще не являются сервисами ...
Или есть какой-то Service Manager, который каким-то образом создает Сервисы с такими реализациями AIDL как Binders? Если да, пожалуйста, направьте меня к такому таинственному менеджеру службы.
EDIT: Я нашел этого сервис-менеджера. Это ServiceManager в пакете android.os. Теперь понятно, почему эти SomethingService фактически не являются сервисами, а на самом деле являются IBinders - диспетчер сервисов каким-то образом создает службы с данным IBinder методом add service (String, IBinder). Но теперь путаница только ухудшается. Реализация этой услуги также заключается в несколько странном ServiceManagerNative, который включает удаленную транзакцию с неизвестным IBinder. Теперь я полностью потерян. Как же запускается этот ServiceManager? Как добавляются сервисы?
попробуйте прочитать эту http://mobileorchard.com/android-app-development-implementing-remote-android-services-with-aidl/ – pskink
Вы не читали вопрос пихта что вы сделали? Мне НЕ интересно, как реализовать AIDL в моем приложении - я знаю, как это сделать. Вместо этого я пытаюсь понять, как именно подключаются системные службы Android и AIDL, такие как IWifiManager. –
, поэтому у вас нет проблем с самим sidl, но wanr, чтобы знать внутренности Android, не так ли? – pskink