【发布时间】:2011-08-10 08:15:11
【问题描述】:
我正在开发一个非常依赖互联网的 android 应用程序,我经常使用这个 RestClient Class 检索数据,它包含了一些关于使用 DefaultHttpClient 进行网络请求的细节。
而且我总是使用不同的线程来执行 HTTP 请求,我创建了一个这样的类:
public class AsyncWorker {
final String SERVER_URL = "http://api.blabla.com";
RestClient client = new RestClient();
public void requestHttp(final String url, final ArrayList<NameValuePair> params, final RequestListener listener) {
new Thread(new Runnable() {
public void run() {
try {
client.setUrl(url);
client.setParams(params);
client.Execute(RestClient.RequestMethod.POST);
String response = client.getResponse();
listener.onComplete(response);
} catch (Exception ex) {
Log.d("LOGIN", ex.getMessage());
}
}
}).start();
}
etc...
所以每当我需要做一个HTTP请求时,我只需要创建AsyncWorker对象,并提供RequestListener回调接口。
但问题是,当用户按下返回/取消按钮时,如何取消 HTTP 请求?在这种情况下,应用程序仍处于一个活动中,例如我创建了一个对话框,用户从该对话框发出请求,然后按下后退按钮,对话框关闭,我需要在那个时候取消请求。
【问题讨论】:
-
对于其他可能遇到此问题的人,请在此处详细阅读http客户端hc.apache.org/httpcomponents-client-ga/tutorial/html/…
标签: android multithreading httpclient