在我们的应用程序中,为了与服务器通信,我们使用MQTT Client。我们只在应用程序处于Foreground模式时使用套接字,我们可能会通过Socket接收大量消息,因此我们不需要将Socket置于服务中。 我如何在后台线程中使用Socket Client来发送和接收消息,而不会冻结UI。
这是我的Paho MQTT套接字客户端的代码:
mqttAndroidClient = new MqttAndroidClient(getApplicationContext(), serverUri, clientId);
mqttAndroidClient.setCallback(new MqttCallbackExtended() {
@Override
public void connectComplete(boolean reconnect, String serverURI) {
if (reconnect) {
addToHistory("Reconnected to : " + serverURI);
// Because Clean Session is true, we need to re-subscribe
subscribeToTopic();
} else {
addToHistory("Connected to: " + serverURI);
}
}
@Override
public void connectionLost(Throwable cause) {
addToHistory("The Connection was lost.");
}
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
addToHistory("Incoming message: " + new String(message.getPayload()));
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
}
});