我有一个应用程序可以访问网站以获取 XML 进行处理。这个过程在一个单独的线程中,当我有 3G 或 WiFi 可用时工作正常。我还有在实际运行线程之前检查信号的代码,因此它不会在没有连接的情况下尝试。
在我的测试过程中,我走进了一座阻挡了所有信号的建筑物,所以当我在外面并且有信号时进程开始了,但是当我进入里面时,信号下降并且我的进度对话框一直在运行,我不得不手动关闭程序以获取它恢复。
如果发生这种情况,是否有一种无需用户手动关闭应用程序的好方法来处理这个问题?
我有一个应用程序可以访问网站以获取 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();
}