如果调用onPause,我想停止或取消AsyncTask。 在onPause:
@Override
public void onPause() {
super.onPause();
Log.e("ONPAUSE", "CALLED");
async.cancel(true);
}
并在doBackground中:
if (!isCancelled()) {
Log.e("RUNNING","TAB3");
try {
URL url = new URL(StaticVariables.url_customer_details + CustomerID);
Log.e("URL", "is " + url.toString());
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setUseCaches(true);
String readStream = readStream(con.getInputStream());
System.out.println(readStream);
arr = new JSONArray(readStream);
for (int i = 0; i < arr.length(); i++) {
object = arr.getJSONObject(i);
}
return readStream;
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
Log.e("CANCELLED","TAB3");
return null;
}
但是日志永远不会说&#34;取消&#34; ..
答案 0 :(得分:0)
在异步任务中覆盖 onCancelled 方法,检查其是否已取消。
@Override
protected void onCancelled() {
Log.e("CANCELLED","TAB3");
super.onCancelled();
}
如果您正在进行计算:
您必须定期检查 isCancelled()。但我想,你不是在做计算。
取消任务
可以通过调用cancel(boolean)随时取消任务。 调用此方法将导致后续调用isCancelled() 返回true。
调用此方法后,取消onCancelled(Object) 在doInBackground(Object [])之后将调用onPostExecute(Object) 回报。
为确保尽快取消任务,您应该这样做 总是定期检查isCancelled()的返回值 doInBackground(Object []),如果可能的话(例如在循环内)。