Связь между Сервисом и Активностью на Android

Как можно общаться между Активностью и Сервисом на Android?

Сегодня я узнал, как общаться, отправив Intent из Activity и ответив обратно с помощью BroadcastRecevier.

Какие у меня есть другие варианты? У кого-нибудь есть учебник / справка по этому поводу?

Ответ на этот вопрос:

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

5.1. Привязка действия к локальной службе Если служба запускается в том же процессе, что и действие, действие может напрямую привязаться к службе. Это относительно простой и эффективный способ общения.

5.2. Использование приемника Вы также можете использовать динамически зарегистрированные приемники для связи. Например, ваша деятельность может динамически регистрировать получателя, а служба отправляет соответствующие события.

5.3. AIDL для сервисов в другом процессе Для привязки к сервису, выполняющемуся в другом процессе, необходимо использовать межпроцессное взаимодействие (IPC), поскольку данные должны передаваться между различными процессами. Для этого вам нужно создать файл AIDL, который похож на интерфейс Java, но заканчивается расширением .aidl и может расширять только другие файлы AIDL.

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

5.4. Отправка данных о намерениях и пакет услуг. Служба получает данные от запускающего компонента Android и может использовать эти данные.

5.5. Обработчик и мессенджер Если служба должна обмениваться данными с действием, она может получить объект типа Messenger через данные намерений, которые она получает из действия. Если Messenger связан с Обработчиком в действии, служба может отправлять объекты типа Сообщение в действие.

Посланник является подлежащим обработке, что означает, что он может быть передан другому процессу, и вы можете использовать этот объект для отправки сообщений обработчику в действии.

Messenger предоставляет также метод getBinder (), который позволяет передавать Messenger в активность. Таким образом, активность может отправлять сообщения в службу.

Благодаряhttp://www.vogella.com/articles/AndroidServices/article.html

Ответы на вопрос(2)

Ваш ответ на вопрос