一、检查是否断开,在不用mqtt地方调用disconnect.
/**
* 断开Mqtt连接
*/
public static void disconnect() {
try {
if (mqttAndroidClient != null) {
String topic = PUBLISH_TOPIC + devicesId;
if (mqttAndroidClient.isConnected()){
mqttAndroidClient.unsubscribe(topic);
}
mqttAndroidClient.close();
mqttAndroidClient.unregisterResources();
mqttAndroidClient.disconnect(); //断开连接
if (mMqttConnectOptions != null) {
mMqttConnectOptions = null;
}
mqttAndroidClient = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
二、检查是否有登录冲突
即 检查mqttAndroidClient = new MqttAndroidClient(this, serverURI, CLIENTID); 中的CLIENTID是否唯一,不同设备需要用不同的id。
String serverURI = HOST; //服务器地址(协议+地址+端口号)
Logger.d("==初始化MQ:" + serverURI);
if (mqttAndroidClient == null) {
mqttAndroidClient = new MqttAndroidClient(this, serverURI, CLIENTID); //CLIENTID
mqttAndroidClient.setCallback(mqttCallback); //设置监听订阅消息的回调
}
三、检查网络
检查WiFi是否连接或者稳不稳定
四、用其他工具登录检查是否为服务端问题
例如可使用Mqttx测试工具