Пример использования AIDL - PullRequest
45 голосов
/ 21 декабря 2011

, чтобы понять AIDL в Android, я хочу один пример из реальной жизни, означает, при каком сценарии развития нам нужно использовать AIDL.

, читая Документы для Android ... Это ставит меня в замешательство и вызывает много вопросов, поэтому мне трудно читать весь документ, кто-нибудь может мне помочь

  1. это для связи с внешним телефоном.

  2. или для связи с другими приложениями (зачем нам нужно общаться с другими приложениями)

  3. о каком сервисе говорят в документах

Ответы [ 5 ]

41 голосов
/ 21 декабря 2011

AIDL используется для Binder.Binder - это механизм для выполнения вызовов RPC в / из службы Android.

Когда использовать AIDL?Когда вам нужен сервис.Когда вам нужен сервис?Если вы хотите обмениваться данными и контролировать что-то в другом приложении, вам нужен сервис, использующий AIDL в качестве интерфейса.(Поставщик контента используется только при обмене данными).

Сервисы могут использоваться в вашем приложении как образец модели в MVC-шаблоне.

18 голосов
/ 21 августа 2014

AIDL - это язык определения интерфейса Android. Это в основном позволяет вам делать вызовы IPC.

Использование: Существуют ситуации, когда одному процессу необходимо общаться с другим для получения определенной информации.

Пример: Процесс A нуждается в информации о состоянии вызова, чтобы определить, нужно ли ему изменить тип вызова (например, аудио на видеовызов или наоборот). Вы можете получить статус вызова от определенных слушателей, но чтобы изменить тип вызова с Аудио на Видео, Процесс A нуждается в хуке для изменения. Этот «зацепка» или способ изменения вызовов обычно является частью классов телефонии, которые являются частью процесса телефонии . Таким образом, чтобы получить такую ​​информацию из процесса телефонии, можно написать службу телефонии (которая работает как часть процесса телефонии Android), которая позволит вам запрашивать или изменять тип вызова. Поскольку Процесс A (Клиент) здесь использует эту удаленную Службу , которая взаимодействует с Процесс телефонии для изменения типа вызова, он должен иметь интерфейс для разговора с сервисом. Поскольку Служба телефонии является поставщиком, а Процесс A (клиент) является пользователем, им обоим необходимо согласовать интерфейс (протокол), который они могут понять и придерживаться. Такой интерфейс - AIDL , который позволяет вам общаться (через удаленный сервис) с процессом телефонии и выполнять некоторую работу.

Проще говоря, AIDL - это «соглашение», которое получает Клиент, в котором говорится о том, как разговаривать с сервисом. Сам сервис будет иметь копию этого соглашения (поскольку он опубликован для своих клиентов). Затем служба предоставит подробные сведения о том, как она обрабатывает, как только поступит запрос, или скажет, когда с ним кто-то разговаривает

Итак, процесс A запрашивает изменение вызова через Сервис, Сервис получает запрос, он обращается к процессу телефонии (поскольку он является его частью) и меняет вызов на видео.

Важно отметить, что AIDL необходим только для многопоточной среды. Вы можете покончить с Binder, если вам не нужно иметь дело с многопоточной аркой.

3 голосов
/ 25 января 2015

Другой пример из реальной жизни - Google Play License использует AIDL.

0 голосов
/ 22 апреля 2019

Вы можете использовать AIDL для установления связи между приложениями / процессами.

Пример: Предположим, у вас есть три приложения APP_A, APP_B и APP_C, теперь предположим, что есть некоторые функции, которые являются общими для всех трех приложений, поэтому вместо записиодин и тот же код во всех приложениях, вы можете создать отдельный APP_AIDL (поиск службы), который работает в фоновом режиме.

0 голосов
/ 25 апреля 2017

1 - для связи с внешним телефоном. Связь с внешним приложением.

2 - или для связи с другими приложениями (почему нам нужно общаться с другими приложениями) Как упомянул @GodOnScooter, когда ваше приложение связывается со службой телефонии, которая фактически является другой частью.

3 - о каком сервисе говорят в документах?

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

...