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

Для этого вам действительно нужно использовать функцию connection_timeout HTTP, чтобы ваши веб-звонки прекращались автоматически через некоторое время. например:

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, если он занимает более 45 секунд, чтобы выполнить запрос.

+0

Можете ли вы также «поймать» таймаут? Когда я показываю диалог, я хотел бы вызвать функцию увольнения и показать ошибку. – Gooey

+0

Да, он будет бросать 'java.net.SocketTimeoutException' в случае возникновения тайм-аута – waqaslam

Смежные вопросы