我在我的 Android 项目中子类化了一个 AsyncTask。
我想实现一项功能,如果当前任务花费太多时间,则允许用户取消当前的 AsyncTack 并开始一个新的。
MyAsyncTask mat = new MyAsyncTask();
当用户单击取消按钮时,我将执行以下代码,然后开始一个新任务。
mat.cancel(true);
但是,我后来意识到,直到旧任务完成,新任务才会开始。旧的任务步骤仍在执行。
我在google上查看官方文档。看来我应该在doInBackGroud(Params... params)中调用以下语句。
if (isCancelled()) break;
问题是我发现下面的代码需要很长时间。
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
但是如何在httpClient.execute(httpPost)执行时检查任务是否被取消?有没有像onProgressChanged(int progress)这样的方法可以在 DefaultHttpClient 中覆盖?