当网络访问丢失时,如何停止运行进度对话框?

时间:2010-12-06 15:27:43

标签: android

我有一个应用程序可以访问网站以获取XML进行处理。这个过程是在一个单独的线程中,当我有3G或WiFi可用时工作正常。我还有代码在实际运行线程之前检查信号,因此它不会尝试没有连接。

在我的测试过程中,我走进了一个阻挡所有信号的建筑物,所以当我在外面并且有信号时,处理开始但当我进去时信号丢失并且我的进度对话框保持运行时,我不得不手动关闭程序让它恢复。

如果出现这种情况,是否有一种很好的方法可以解决这个问题,而无需用户手动关闭应用程序?

1 个答案:

答案 0 :(得分:3)

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();
    }