我的AsyncTasks有问题。

我的应用程序很简单:具有自定义Extras的ListView和Activity。
在Activity类中,我具有一些带有DefaultHttpClient的AsyncTasks(下载Jsons,图像)

当我等到AsyncTask加载所有内容,然后返回列表并选择另一行时,一切都很好。

但是,如果我开始活动并立即按“返回”,然后选择另一行,则新的活动开始,但是具有先前AsyncTask的任务(不合适的图像和字符串)。
过了一会儿,一切恢复正常(AsyncTask下载适当的内容),但我想避免下载不必要的数据。

如何不停止,但当我按“返回”时永久删除AsyncTask?也许是其他方式?

我将感谢您的帮助。

编辑:
当然,我使用取消方法:
活动类

@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);
        }
    }

最佳答案

有一些技术可以利用AsyncTasks来避免此问题。我建议您不要研究这些技术的细节,而建议您研究一下Loaders(特别是AsyncTaskLoader),它会为您处理管理状态的细微差别。看一下这个链接:http://developer.android.com/guide/components/loaders.html

10-08 15:32