android:Взаимодействие Service и UI

308
11 февраля 2017, 06:46

Подскажите наиболее простую, надежную и наиболее "синхронную" схему взаимодействия Компонента с GUI и Service. В ИНЕТЕ описано много схем, но, как правило, описывается схема, где главный - компонент с GUI , а SERVICE - подчиненный компонент. То есть Компонент с GUI отдает команды в Service- а Service отвечает и выполняет задачи. А тут оба компонента как бы равнозначны. Service, взаимодействует с Интернет-сервером, передает данные в компонент с GUI для отображения(при этом данные часто меняются и должны быть максимально синхронизированы). При этом, компонент с GUI сам может инициировать ряд задач для SERVICE(который передаст данные на сервер - оттуда получит ответ и передаст их обратно в компонент с GUI для отображения данных). Такая схема требуется для того,чтобы Service мог работать в фоновом режиме даже без компонента с GUI. Итак, требуются полноценная двунаправленная связь SERVICE и компонента с GUI с надежной синхронизацией данных(фактически в SERVICE будут храниться данные, постоянно обновляемые, а отображаться они будут в компоненте с GUI)

Answer 1

Посмотрите на мой древний ответ на эту тему

В вашем случае, я бы рекомендовал обратить пристальное внимание на п. 2 той рекомендации:

Через механизм Service binding - связывания Activity и Service - в итоге можно иметь в Activity указатель на экземпляр службы.

На всякие новомодные Otto/EventBus не советую вестись, поскольку они не работают когда сервис находится в другом процессе.

Update

Если речь идет о доступе из Service к Activity в том контексте, который обсуждается в комментариях, то я бы рекомендовал способ №3

Через LocalBroadcastManager

Говоря русским языком при получении неких данных, которые требуют отражения в Activity вы посылаете LocalBroadcast, который ловится вашим Activity, вытаскиваются данные из Bundle упакованных в LocalBroadcast ну и т.д.

В принципе, можно воспользоваться и обычным Broadcast'ом, просто LocalBroadcast, не пересекает границы приложения за счет чего обеспечивается и скорость и приватность данных.

READ ALSO
Исполняемые файлы Java

Исполняемые файлы Java

Вопрос такой, если создатьjar или

373
JsonRPC маппинг

JsonRPC маппинг

Я создал простую JsonRPC server (Netty socketServer) для выполнения определенных задач, общих для нашей команды, но вызывающиеся из разных сетейСервер получает...

397
Лишние символы в html-разметке

Лишние символы в html-разметке

На странице внезапно появились символы `` c разными вариациями, в зависимости от ОС:

304