2017-01-26 2 views
0

Я не могу найти прямой ответ о том, когда следует создать интерфейс ADIL в дополнение к маркировке службы, экспортированной для использования службы удаленным процессом.Экспортируемый сервис Vs ADIL

Все, что я нашел до сих пор, заключается в том, что ADIL допускает одновременное выполнение нескольких событий?

ответ

1

Вы используете AIDL, если хотите разрешить другим приложениям или процессам связываться с экспортированной услугой (например, bindService()).

Если вместо этого вы ожидаете, что другие приложения или процессы начнут ваш сервис через startService(), вам не потребуется AIDL.

+0

Я вижу, что можно отметить, что экспортированная служба может быть запущена, но не обрабатывается через связующий объект со всех границ процесса? – sousdev

+0

@justanother: Правильно. 'bindService()' может работать без AIDL, но только для службы в вашем собственном процессе. Для кросс-процесса работы вам нужен AIDL и код, который генерирует AIDL. В принципе, вы можете заставить 'bindService()' работать через процессы, изучая код, сгенерированный AIDL, и пытаться воспроизвести его самостоятельно, но я не знаю, насколько это практично. – CommonsWare

+0

'' bindService() может работать без AIDL, но только для службы в вашем собственном процессе. Для работы с несколькими процессами вам нужен AIDL и код, который AIDL генерирует «на самом деле, вы все равно можете использовать' android.os .Messenger' или любой другой класс, который использует протокол 'Binder' (' transact() '/' onTransact() 'методы), но я согласен, что AIDL намного проще – pskink

Смежные вопросы