¿Por qué URLConnection expiró después de más de 6 minutos en lugar de 5 segundos?

Estoy copiando este método literalmente de mi aplicación, que aún no está completo, pero intenta proporcionarme un seguimiento de pila de tiempo de espera si las cosas no van bien:

protected boolean isHttpAlive()  {
  boolean isHttpOk = false;

  HttpURLConnection httpConnection = null;
  try {
    URL gurl = new URL("http://www.amazon.com/");
    URLConnection connection = gurl.openConnection();
    connection.setConnectTimeout(5 * 1000); // 5 seconds!
    httpConnection = (HttpURLConnection) connection;
    int responseCode = httpConnection.getResponseCode();
    if (responseCode == HttpURLConnection.HTTP_OK)
      isHttpOk = true;
  } 
  catch (Exception e) {                    
    e.printStackTrace();
  }
  finally {
    if (httpConnection != null)
      httpConnection.disconnect();
  }

  return isHttpOk;
}

Ahora en uno de mis dispositivos de prueba (Droid), cuando hay un problema, obtengoLa excepción pero solo despues6 minutos y 36 segundos, no 5 segundos como lo puse en el código anterior.

La excepción de tiempo de espera se produce para elgetResponseCode().

¿Por qué?

¿Qué me estoy perdiendo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta