我有一个应用程序,该应用程序访问网站以获取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