Пример работы c Messenger. Службы в Android

Пример работы c Messenger. Службы в Android

В предыдущем уроке мы узнали об основах работы со службами (Services) в Android. Теперь, когда мы уже понимаем разницу между Service и IntentService, можем приступать к более сложным темам межпроцессного взаимодействия. Если вы еще не знакомыми с основами работы со службами, то желательно просмотреть этот материал по Service и IntentService в Android.

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

Messenger в Android. Пример использования

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

Messenger используется для отправки сообщений в другом процессе с помощью IPC (Inter-Process Communication) тем самым обеспечивая связь между клиентом и сервером. Messenger будет связан с обработчиком (handler), поэтому вся работа будет происходить в одиночном потоке обработчика.

Чтобы привязать Service, нужно передать ссылку на экзмепляр Messenger в метод onBind() и передать ссылку обработчика при создании экземпляр Messenger. Давайте посмотрим небольшой пример создания службы, которая работает в другом процессе, используя Messenger, который связан с обработчиком:

Как видно из кода, служба использует Messenger для общения с Activity. Все данные между Service и Acitivity передаются в объектах Bundle, что является очень удобным для передачи разного рода информации. Сама служба использует класс IncomingHandler — наследник Handler для обработки полученного сообщения.

Теперь давайте создадим Activity, чтобы привязать эту службу для отправки сообщений на сервер, и ответов сервера на клиент, используя обработчик Messenger:

В этом приложении нам также требуется иметь ServiceConnection к службе для создания соединения между клиентом и сервером. ResponseHandler — наследник Handler обработает ответ Messenger’а и обновит пользовательский интерфейс.

Теперь добавим наш Service в AndroidManifest.xml в секции application:

В файл макета добавим лишь поле ввода и кнопку для отправки сообщения:

Теперь запустим нашу програмку и посмотрим на результат:

Пример работы c Messenger. Службы в Android

Как видим, Messenger является отличным способом общения между сервером и клиентом.

Полный проект Android Studio вы найдете по ссылке.

В следующем уроке мы научимся работать с AIDL в разных процессах. Подписывайтесь на новости в соц. сетях и новые статьи.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *