我有問題與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