2013-02-08 60 views
1

在我的應用程序中,我每5秒鐘不斷創建一個AsyncTask。我在調試期間檢查了任務,可以清楚地看到任務總是完成其過程並退出doInBackground方法。 onPostExecute中沒有任何代碼被執行。然而,AsyncTask仍然保留在內存中,就像我在Eclipse中看到的一樣。我認爲它可能會被重用於下一個循環,或者最終收集垃圾,但另一個垃圾會被創建並繼續。最終足夠的他們被創建並減慢系統。爲什麼AsyncTasks不會在Android中被破壞

什麼可能是潛在的問題?

+0

只要'doInBackground()'在有限時間內的回報,這不會是一個問題,而該線程將回收未來任務。 –

+0

您是否曾嘗試一次調試單個異步任務或從調試角度切換線程之間 – Nitin

回答

1

AsyncTask管理用ThreadPoolExecutor創建的線程池。它 將有5到128個線程。如果有超過5個線程,則 在刪除 之前,這些額外的線程將至多停留10秒。 (注意:這些數字是針對當前可見的開放 源代碼,並因安卓版本而異)。

獨自離開了的AsyncTask線程,請

來源問題:AsyncTask threads never die