Как использовать сообщение о событии Square otto bus в WearableListenerService?

Предыстория: я добавляю поддержку Android Wear в свое мобильное приложение и испытываю проблемы с использованием события otto bus в WearableListenerService.

Я добавил TasksService на свой мобильный, который расширяет WearableListenerService. Всякий раз, когда приложение изнашивает запросы на какие-либо новые задачи, я пытаюсь опубликовать событие шины из TasksService (например: bus.post (new TasksEvent.GetTasks()), где я делаю сетевой вызов HTTP с помощью Retrofit и получаю новые задачи. Один раз я получаю новые задачи из сети и снова публикую ответ с помощью bus.post В TasksService у меня есть подписка на ответ, и я отправляю его в приложение для ношения.

Проблема:

Проблема в том, что к тому времени, когда я делаю сетевой вызов HTTP и получаю ответ, WearableListenerService уничтожается, а событие подписки не вызывается. Может ли кто-нибудь дать представление о том, как использовать событие otto bus в Android WearableListenerService?


person Rama Krishna    schedule 10.03.2016    source источник


Ответы (1)


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

Кроме того, вы, вероятно, захотите отказаться от использования Otto в этом случае. Я не использовал Otto специально, но мой опыт с другими автобусами событий показывает, что они не подходят для этой ситуации. Они могут быть удобным способом сократить время, когда вам нужно обмениваться данными между разрозненными частями вашего кода, но они должны вписываться в жизненный цикл компонентов Android, чего в данном случае нет. Возможно, вам потребуется подключить GoogleApiClient к вашему новому сервису и оттуда отправить данные обратно в Wear.

person String    schedule 11.03.2016
comment
Спасибо за объяснение. Мне это помогло. - person Rama Krishna; 18.03.2016
comment
Если мой ответ решил вашу проблему, обычно его принимают. - person String; 19.03.2016
comment
Извините .. Я новичок в переполнении стека. Я принял ваш ответ сейчас. - person Rama Krishna; 25.03.2016