如何在WearableListenerService中使用square otto bus event post?

时间:2016-03-10 21:56:23

标签: android wear-os otto

背景:我正在为我的移动应用程序添加android磨损支持,并且在WearableListenerService中使用otto总线事件时遇到问题。

我在我的手机上添加了一个TasksService,它扩展了WearableListenerService。每当遇到任何新任务的app请求时,我都试图从TasksService发布一个总线事件(例如:bus.post(new TasksEvent.GetTasks()),在那里我使用Retrofit进行HTTP网络调用并获取新任务。我从网络中获取新任务并再次使用bus.post发布响应。在TasksService中,我订阅了响应并将其发送到穿戴应用程序。

问题:

问题是当我进行HTTP网络调用并获得响应时,WearableListenerService被破坏而订阅事件未被调用。谁能给出如何在Android WearableListenerService中使用otto总线事件的见解?

1 个答案:

答案 0 :(得分:0)

您需要启动一个单独的Service来执行HTTP调用和响应的(可能是长期运行的)工作。正如您所指出的,当您只是扩展WearableListenerService时,系统会在Wear API交互完成后终止服务。

另外,在这种情况下,您可能希望不再使用Otto。我没有特别使用奥托,但我对其他赛车的经验是,他们不适合这种情况。当您需要在代码中的不同位置之间进行通信时,它们可以是一个很好的快捷方式,但它们需要适合Android组件生命周期 - 这种情况并非如此。您可能需要在新服务中连接GoogleApiClient并将数据从那里发送回Wear。