2010-12-14 6 views
2

Android 애플리케이션을 사용하여 HTTP 호출을하는 방법에는 여러 가지가 있습니다. 어떤 사람이 http 서버에서 이미지를 가져 오려면 그 중 하나의 방법을 사용하여 이미지를 가져올 수 있습니다. 반면에 http 서버 응답을 위해 JSON 또는 XML을 읽으려는 사람은 다른 방법을 사용하여이를 수행 할 수 있습니다. 위의 두 시나리오는 다른 시나리오가 발생할 수있는 예입니다. 내 질문은 거기에 어떤 HttpConnection 시간 초과 체크를 유지할 수있는 표준 방법이있다. 특정 시나리오에서는 WIFI 또는 GPRS 연결을 사용할 수 있지만 처리 시간이 길기 때문에 응용 프로그램의 사용자 경험이 방해 받고 있습니다. 이 문제를 어떻게 확인할 수 있습니까?Android에서 연결 시간 초과

감사

다음은 코드 예제

public boolean readAndSaveFileFromWeb(String url) { 
    byte[] fileRead = null; 
    FileOutputStream fos; 
    try { 
     InputStream is = (InputStream) this.fetch(url); 
     if(is!=null){ 
      fileRead = readBytes(is); 
     }else{ 
      return false; 
     } 
    } catch (MalformedURLException e) { 
     Log.v(TAG, "readAndSaveFileFromWeb Exception: Malformed URL " 
       + e.getMessage()); 
     return false; 
    } catch (IOException e) { 
     Log.v(TAG, " readAndSaveFileFromWeb Exception: IOException" 
       + e.getMessage()); 
     return false; 
    } catch (Exception e) { 
     Log.v(TAG, " readAndSaveFileFromWeb Exception: " + e.getClass()); 
     return false; 
    } 
} 


public Object fetch(String address) throws MalformedURLException, 
     IOException { 
    URL url = new URL(address); 
    Object content = url.getContent(); 

    return content; 
} 

이제 위의 코드는 주소 URL에서 콘텐츠/응답을 얻을 수있다. 특정 시나리오에서는 WIFI 또는 GPRS 연결을 사용할 수 있지만 연결 속도가 느려지면 데이터를 가져 오는 데 더 많은 시간이 소요됩니다. 이 지연 동안 .. UI 쓰레드와 다른 스레드에서 네트워크 집중적 인 작업을 수행하고 있지만 응용 프로그램이 멈춘 것 같습니다. 이것은 약간의 사용자 경험을 방해하고 있습니다.

+1

귀하의 질문은 약간 모호합니다. 설명 할 수있는 몇 가지 예제 코드를 게시 할 수 있습니까? – elevine

답변

0

HTTP 요청을 실행하기 전에 네트워크 연결을 확인하거나 시간 초과 예외를 잡으십시오.

+0

그래 .. 네트워크 연결은 가능하지만 속도가 느린 경우에는 ...... –

+0

사용 시도 catch 블록을 사용하고 예외를 잡으십시오 ... – Eby