@Override
    public void run() {
      try {
        MQTT mqtt = new MQTT();
        mqtt.setConnectAttemptsMax(1);
        mqtt.setReconnectAttemptsMax(0);
        mqtt.setKeepAlive((short) 300);
        Log.d(TAG, "Connecting to MQTT...");

        mqtt.setHost(this.hostname, this.port);
        BlockingConnection connection = mqtt.blockingConnection();
        connection.connect();
        connection.disconnect();
        Log.d(TAG, "Connected to MQTT.");

        getActivity()
            .runOnUiThread(
                new Runnable() {

                  @Override
                  public void run() {
                    handleMqttSuccess();
                  }
                });
      } catch (final URISyntaxException e) {
        getActivity()
            .runOnUiThread(
                new Runnable() {

                  @Override
                  public void run() {
                    handleMqttError("MQTT broker hostname invalid.", e);
                  }
                });
      } catch (final Throwable t) {
        getActivity()
            .runOnUiThread(
                new Runnable() {

                  @Override
                  public void run() {
                    handleMqttError("Unable to connect to MQTT broker.", t);
                  }
                });
      }
    }