Как вы можете остановить диалоговое окно прогресса, запущенное при падении доступа к сети?
-
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();
}