这是因为已经连接到了MQTT代理,再次进行连接时会触发错误。解决方法是,在连接之前,先断开当前连接。示例代码如下:
if (mqttAndroidClient != null && mqttAndroidClient.isConnected()) { try { mqttAndroidClient.disconnect(); } catch (MqttException e) { e.printStackTrace(); } }
// 等待mqttAndroidClient断开连接 try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); }
// 进行新的连接 try { mqttAndroidClient.connect(mqttConnectOptions, null, new IMqttActionListener() { @Override public void onSuccess(IMqttToken asyncActionToken) { Log.d(TAG, "连接成功"); // 连接成功后的操作 }
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
Log.d(TAG, "连接失败");
exception.printStackTrace();
// 连接失败后的操作
}
}); } catch (MqttException e) { e.printStackTrace(); }