Как установить двустороннюю связь между Деятельностью и Сервисом в разных процессах? - PullRequest
7 голосов
/ 19 марта 2010

Я работаю над установлением двусторонней связи между Активностью и Сервисом, которая выполняется в другом процессе.

Запрос процесса из Activity не представляет особой проблемы. Но я хочу, чтобы процесс уведомлял активность о событиях. Идея заключается в следующем: сервис работает независимо от реального приложения. Периодически запрашивает веб-сервер. Если на веб-сервере найдено новое задание, процесс должен уведомить об этом.

Я нашел эту ветку на AndDev.org, но она, похоже, не работает для меня. Я возился с BroadcastReceiver. Я реализовал интерфейс, который должен уведомлять Activity, но проблема в том, что слушатель всегда равен null, поскольку Broadcast из процесса выполняется через Intent, поэтому класс, расширяющий BroadcastReceiver, будет создан заново.

Как мне установить двустороннюю связь? Это должно быть возможно. Спасибо за любую помощь,

Стеф

Ответы [ 3 ]

4 голосов
/ 19 марта 2010

Либо используйте BroadcastReceiver, либо попросите Activity зарегистрировать объект обратного вызова или прослушивателя , который Service вызывает для ключевых событий. Приведенные выше ссылки ведут на примеры проектов, демонстрирующих каждый из этих методов.

2 голосов
/ 19 марта 2010

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

Таким образом, вы сможете установить двустороннюю связь между любым компонентом.

2 голосов
/ 19 марта 2010

Я думаю, вам нужно, чтобы BroadcastReceiver снова начал свою деятельность с результата в Намерении.

Или вы можете использовать AIDL о AIDL. В примерах также есть (несколько?) Пример использования AIDL и сервисов. Но AIDL может быть очень хлопотно для вашей цели.

...