我需要使用loopj从AsyncTask发送多部分发布请求,因此我被迫使用SyncHttpClient。
阅读源代码注释,我知道从同步请求的post方法返回的请求句柄不能用于取消请求,因为它在返回时已经完成(这是有意义的)。看起来像是一个捕获22。
是否有其他方法可以取消当前正在运行的同步请求? 是否可以使用SyncHttpClient.cancelAllRequests(true);来自UI线程? 那么,来自UI线程的SyncHttpClient.cancelAllRequests(true)不起作用。这是一个错误吗?
答案 0 :(得分:0)
如果您希望能够取消正在运行的请求,请确保您可以使用AsyncHttpRequest。如果从另一个线程甚至AsyncTask运行异步http请求并不重要,您只需确保在主线程上调用AsyncHttpRequest即可。你可以通过使用
强制它进入主线程来轻松完成Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable myRunnable = new Runnable() {
public void run() {
// run your AsyncHttpRequest in here.
// Since it is called from the main thread it will run asynchronously
// and therefore it can be cancelled easily by calling client.cancelAllRequests(true)
}
};
mainHandler.post(myRunnable);