【问题标题】:PAHO MQTT Android client for service and MainActivity BinderProxy用于服务和 MainActivity BinderProxy 的 PAHO MQTT Android 客户端
【发布时间】:2017-07-01 19:02:16
【问题描述】:

我也是 MQTT 和 PAHO MQTT 客户端库的新手。我正在寻找使用 android 客户端库的最佳实践。

我有一个带有后台服务的应用程序,可以在后台向 mqtt 代理发布信息。因此,我在后台服务中创建了一个 mqtt 客户端,并且消息的发布工作正常。

但我还需要在 Main 活动中使用 mqtt 客户端来接收来自 mqtt 代理的不同信息。当我尝试在 Main 活动(在主线程中)中创建客户端时,我收到异常“java.lang.ClassCastException:android.os.BinderProxy 无法转换为 ...”。我找到了有关该问题的一些信息,我认为该问题出在应用程序中的多个 mqtt 服务中,但我不知道如何在服务和主应用程序之间共享一个 mqtt 客户端实例 - 我不知道是否是正确的解决方案。

在清单中我有这个:

...
<service android:name=".MyBackgroundService" android:process=":remote" />
<service android:name="org.eclipse.paho.android.service.MqttService" android:process=":remote" >
...

请问您能帮我找到正确的解决方案吗?

谢谢。

【问题讨论】:

  • 你可以在你的activity中绑定你的service,在你的service中实现一些方法来通过回调发送消息和接收消息
  • 谢谢,我可以为同一个 MQTT 代理执行此操作。但是如果我需要将主应用连接到不同的代理怎么办?
  • 是的,我想要。但是当我尝试将第二个 MqttAndroidClient 连接到第二个服务器(在主线程中)时,我遇到了 BinderProxy 异常。

标签: android service client mqtt paho


【解决方案1】:

您可以使用 EventBus 通过服务向活动发送消息。

【讨论】:

    猜你喜欢
    • 2018-08-31
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 2015-04-17
    • 2018-03-17
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多