2 Услуги Общение - PullRequest
       23

2 Услуги Общение

2 голосов
/ 26 января 2012

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

Мой вопрос: я бы хотел, чтобы первая служба также имела возможность общаться со второй службой (верно)теперь реализован только наоборот).Могу ли я как-то сделать это с тем же Binder?или я должен привязать первый сервис ко второму?может быть, есть способ заставить две службы общаться по одному и тому же соединению?

Буду признателен за любую помощь.

Влад

Ответы [ 2 ]

4 голосов
/ 26 января 2012

Если вам нужен первый Service для вызова методов на втором Service, то вам нужно получить Binder от второго Service.Если вы просто хотите общаться, вы можете использовать Broadcasts и настроить Receiver в первом Service.

1 голос
/ 05 марта 2012

Я думаю, что двусторонняя связь с использованием одного и того же связующего невозможна для служб. Я много пробовал, и проблема, которую я нашел, используя язык вашего собственного примера, состоит в том, что интерфейсы IBinder, полученные из второго сервиса, всегда равны нулю. Я имею в виду, что первый сервис связывался бы со вторым, чтобы получить действительный IBinder для связи со вторым сервисом. Ограничение состоит в том, что когда вторая служба вызывает первую службу, она не может передавать интерфейсы первой службе, поэтому могут выполняться обратные вызовы (от первой к второй). Вместо этого необходимо установить новое независимое соединение IBinder со второй службой. Надеюсь, что кто-нибудь может помочь нам с этим.

Альберто.

...