0

在我的应用程序中,我正在调用 API 以获取一些 JSON。有时当人们在 2g 网络上或他们的网络掉线时,等待时间会变得很长(尤其是当你显示一个对话框时),因此我想在 45 秒后终止线程。

我在 SO 上搜索并找到了这个线程:Running a thread for some seconds

这是最好的方法吗?

我的代码格式如下:

new Thread(new Runnable() {
                public void run() {
                     //i.e.
                    fetchJSON();
                }
            }).start(); 

干杯!

4

1 回答 1

1

为此,您实际上需要使用 HTTP 的 connection_timeout 功能让您的网络调用在一段时间后自动终止。例如:

final int CONNECTION_TIME_OUT = 45;     //in seconds

HttpParams httpPar = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpPar, CONNECTION_TIME_OUT * 1000);
HttpConnectionParams.setSoTimeout(httpPar, CONNECTION_TIME_OUT * 1000);
HttpClient client = new DefaultHttpClient(httpPar);

这样,client如果完成请求的时间超过 45 秒,您将自动终止 http 连接。

于 2013-04-08T12:41:38.210 回答