2013-04-08 2 views
0

내 앱에서 API를 호출하여 일부 JSON을 가져옵니다. 가끔 사람들이 2g 네트워크에 있거나 네트워크가 끊어지면 대기 시간이 길어 져서 (특히 대화 상자를 표시 할 때 특히 그렇습니다), 45 초 후에 다시 죽이려고합니다.Android : 일정 기간 동안 스레드 실행

나는 SO를 검색하여이 스레드를 찾았습니다 : Running a thread for some seconds.

이렇게하는 것이 가장 좋은 방법입니까?

내가 가진 코드의 형태 :

new Thread(new Runnable() { 
       public void run() { 
        //i.e. 
        fetchJSON(); 
       } 
      }).start(); 

건배!

답변

1

사실상 HTTP의 connection_timeout 기능을 사용하여 일정 시간 후에 웹 호출이 자동 종료되도록해야합니다. 예를 들면 :이 요청을 완료하는 데 45 초 이상 걸리는 경우이와

final int CONNECTION_TIME_OUT = 45;  //in seconds 

HttpParams httpPar = new BasicHttpParams(); 
HttpConnectionParams.setConnectionTimeout(httpPar, CONNECTION_TIME_OUT * 1000); 
HttpConnectionParams.setSoTimeout(httpPar, CONNECTION_TIME_OUT * 1000); 
HttpClient client = new DefaultHttpClient(httpPar); 

, 당신의 client가 자동으로 HTTP 연결을 종료합니다.

+0

타임 아웃을 "catch"할 수도 있습니까? 대화 상자를 표시 할 때 dismiss 함수를 호출하고 오류를 표시하려고합니다. – Gooey

+0

예, 타임 아웃이 발생할 경우를 대비하여'java.net.SocketTimeoutException'을 던집니다. – waqaslam

관련 문제