我有问题与AsyncTasks。如何正确销毁AsyncTasks?
我的应用程序很简单:ListView和活动定制的附加功能。
在Activity类我有DefaultHttpClient一些AsyncTasks(下载Jsons,图像)
当我等到的AsyncTask负载的一切,然后再返回到列表,然后选择另一行,一切都很好。
但是如果我开始我的活动,并立即按“返回”,然后选择另一行,则新的活动启动,但与以前的AsyncTask(不良的图像和字符串)的任务。 一段时间后,一切恢复正常(AsyncTask下载适当的内容),但我想避免下载不必要的数据。
如何没有停止,而是永久删除的AsyncTask当我按下“返回”?或者也许是另一种方式?
我将不胜感激。
编辑: 当然我用取消方法:
Activity.class
@Override
public void onDestroy() {
super.onDestroy();
lastFM.cancel(true);
}
AsyncTask.class
@Override
protected String doInBackground(String... urls) {
if (isCancelled()) return null;
inputStream = getInputStreamFromHttp(urls[0]);
if (isCancelled()) return null;
jsonObject = getJSONObjectFromInputStream(inputStream);
bio = getBioFromJSON(jsonObject);
return bio;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (!isCancelled()) {
Intent i1 = new Intent(ActivityStation.UPDATEFRAGMENT3).putExtra(ActivityStation.ARTISTBIO, s);
LocalBroadcastManager.getInstance(context).sendBroadcast(i1);
}
}
我用这个,但它仍然是同样的问题。 – CodeNinja 2014-09-25 09:46:42
你的意思是即使取消后isCancelled也会返回false? – 2014-09-25 09:55:30
**从参考:** *调用此方法保证onPostExecute(对象)则永远不会调用* 那么为什么叫? – CodeNinja 2014-09-25 11:54:29