我正在使用 Mosquitto Mqtt 和 paho API 在 android 设备上接收推送消息。但是一旦网络连接发生变化,它就会停止接收消息。以下是使用简单测试用例重现问题的步骤:
1)创建一个简单的活动。
2) On Activity StartUp 通过 paho API 连接到 mosquitto 测试服务器 (test.mosquitto.org:1883)。
3)订阅一些主题。
4)向主题发布一些消息。
结果: Mqtt 客户端收到发布到该主题的所有消息。现在
5)禁用手机上的互联网连接(移动数据)
6) 向主题发布一些消息。
7)重新连接互联网。
结果:客户端在禁用 Internet 连接后未收到任何发布的消息。
由于KeepAliveInterval已保持为高值(30 分钟),因此它应在重新连接到 Internet 后接收所有消息。
相同的用例(相同的代码)适用于简单的 java 项目(非安卓),我在我的笔记本电脑上禁用互联网来运行用例。
知道为什么它不能在 android 设备上工作吗???我错过了什么吗?
笔记:
1) 使用 mqtt-client-0.4.1
2) Android 目标 API 级别 11
3) 测试期间不让设备进入睡眠模式。
4) 在 connectionLost 回调中没有得到任何调用,并且 mqtt 回调的所有 4 个线程都在整个测试用例中运行,即连接 mosquitto 服务器完好无损。