AsyncTask释放资源

我一开始这样做,AsyncTask.cancel(true);
看下参数的定义:
@param mayInterruptIfRunning true if the thread executing this * task should be interrupted; otherwise, in -progress tasks are allowed * to complete.
1、如果是true,如果线程执行,则会被打断
2、如果是false,线程将会被运行执行完成

所以在onDestroy调用cancel("true");是没有作用的

其实只是设置了一个canceled的字段

正确做法

@Override
protected void onPreExecute() {
super.onPreExecute();
if (isCancelled()) {
return;
}
....
}

@Override
protected ArrayList doInBackground(Void... voids) {
if (isCancelled()) {
return null;
}
....
}

@Override
protected void onPostExecute(ArrayList list) {
super.onPostExecute(list);
if (isCancelled()) {
return;
}
...
}

你可能感兴趣的:(AsyncTask释放资源)