Как вы можете остановить диалоговое окно прогресса, запущенное при падении доступа к сети?

StackOverflow https://stackoverflow.com/questions/4367936

  •  09-10-2019
  •  | 
  •  

Вопрос

У меня есть приложение, которое выходит на сайт для захвата XML для обработки. Этот процесс находится в отдельном потоке и работает нормально, когда у меня есть 3G или WiFi. У меня также есть код, который проверяет сигнал, прежде чем на самом деле запустить нить, чтобы она не попыталась Нет подключения.

Во время моего тестирования я вошел в здание, которое заблокировало все сигнал, поэтому процесс начался, пока я был снаружи и имел сигнал, но когда я вошел в испуганный сигнал, и мой Диалог прогресса Просто продолжал бегать, мне пришлось вручную закрыть программу, чтобы восстановить его.

Есть ли хороший способ справиться с этим, не требуя пользователя вручную отключить приложение, если бы эта ситуация произошла?

Это было полезно?

Решение

Параметры времени ожидания на ваш HttpClientи поймать sockettimeoutexception.

HttpParams httpParams=new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
HttpClient httpClient=new DefaultHttpClient(httpParams);
try {
    httpClient.execute(new HttpGet("http://myserver.xml"));
}
    catch(SocketTimeoutException ex){
        //Perform Timeout i.e. cancle progress dialog
    }
    catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top