我的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