Android IntentService вызов

Я пытаюсь установить двунаправленное соединение между двумя устройствами: одно будет сервером, а другое - клиентом. Поскольку он является двунаправленным, оба могут отправлять полученные данные.

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

Итак, если внутри метода onHandleIntent() я жду сообщений, куда мне поместить код для отправки сообщений?

РЕДАКТИРОВАТЬ: я мог бы создать другую службу для отправки части, но это заставило бы меня создать 4 службы, 2 для клиента (отправить и получить) и еще 2 для сервера (отправить и получить снова).

1 ответ

Решение

IntentService имеет следующее поведение:

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

из документов. Один и тот же IntentService не должен делать 2 вещи одновременно - если он слушает (я полагаю, цикл while в onHandleIntent?), То любые сообщения, которые вы отправляете этому IntentService во время прослушивания, не будут обрабатываться. Они будут поставлены в очередь до завершения прослушивания, а затем отправлены. Вы можете создать два IntentServices (один для отправки, другой для получения) или создать новый Сервис, который будет раскручивать свои собственные Потоки, которые могут отправлять и прослушивать одновременно.

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

Другие вопросы по тегам