【发布时间】: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