我正在使用AsyncTaskinitalize AndroidHttpClient并执行POST请求doInBackground().我希望用户能够通过按后退按钮取消请求.AsyncTask有一个cancel()方法只改变布尔返回值,isCancelled()然后doInBackground()在调用之前等待完成onCancelled().这意味着将其AsyncTask留给doInBackground()方法来持续检查任务是否已被取消(使用isCancelled()).如果已取消,doInBackground()应提前过早返回.我遇到的问题是99%的工作线程执行doInBackground()停止:
HttpResponse response = httpClient.execute(request[0]);
Run Code Online (Sandbox Code Playgroud)
因为此同步函数调用封装了请求的网络方面.如何在中途取消请求?
我正在考虑尝试在请求期间更改超时时间,但这似乎线程不安全.
我也在考虑覆盖AsyncTask的cancel()方法,它可以更好地工作.
有什么建议?