【问题标题】:How to use square otto bus event post in WearableListenerService?如何在 WearableListenerService 中使用方形 otto 总线事件发布?
【发布时间】:2016-03-10 21:56:22
【问题描述】:

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

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

问题:

问题是当我进行 HTTP 网络调用并获得响应时,WearableListenerService 正在被破坏并且订阅事件没有被调用。谁能提供见解如何在 android WearableListenerService 中使用 otto bus 事件?

【问题讨论】:

    标签: android wear-os otto


    【解决方案1】:

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

    此外,在这种情况下,您可能不想使用 Otto。我没有专门使用 Otto,但我对其他事件总线的经验是它们不适合这种情况。当您需要在代码中的不同位置之间进行通信时,它们可能是一个很好的捷径,但它们需要适应 Android 组件生命周期 - 在这种情况下不适合。您可能需要在新服务中连接 GoogleApiClient 并将数据从那里发送回 Wear。

    【讨论】:

    • 感谢您的解释。它帮助了我。
    • 如果我的回答解决了您的问题,习惯性地接受它。
    • 对不起..我是新来的堆栈溢出。我现在接受了你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    相关资源
    最近更新 更多