我目前使用asyncTask()
做一些背景交換位圖圖像,隨着我的活動進展,所有的作品都很好;直到我結束任務所在的活動。任務的線程進入「等待」狀態而不是被破壞?我已經取消了,並且也檢查了返回值.isCancelled()
。除非當我從MAIN活動再次重新開始活動時,這實際上不會成爲問題,它實際上會爲新的asyncTask()
生成一個新線程;從而讓坐在那裏的老人在後臺「等待」?這是一個錯誤,還是我不正確地使用這個功能?Android:正確銷燬asyncTask?
回答
AsyncTask使用線程池。在調試面板中看到4/5異步任務是正常的。只要確保您的異步任務不會對活動持有強烈的引用(嘗試將這些異步任務設置爲靜態內部類(或事件單獨類),並讓它們對該活動持有一個弱引用而不是強引用。
- Background task, progress dialog, orientation change - is there any 100% working solution?
- AsyncTask threads never die
- Simple Thread Management - Java - Android
- 等>嘗試搜索 「的Android的AsyncTask線程池」,以瞭解更多信息。
因此,理論上這可能會導致某種線程混亂,當一個新的活動被創建並且它想使用那個'Tid'時,這個線程已經存在並且正在等待'Tid'? – 2011-04-21 09:23:40
查看編輯答案。有些鏈接在那裏。 – 2011-04-21 10:54:34
感謝您的信息馬文。 – 2011-04-21 19:51:27
我認爲你應該在doInBackground函數中使用靜態標誌變量來終止操作或循環。這樣你就可以完成你的任務
我試過這個,與isCancelled()一起無濟於事。 – 2011-04-21 09:41:32
- 1. 正確銷燬dojo DataStore
- 2. 如何正確銷燬AsyncTasks?
- 3. 正確的線程銷燬
- 4. Rails雙重多態依賴:銷燬沒有正確銷燬
- 5. (PHP)如何正確銷燬會話cookie?
- 6. 如何正確地銷燬鏈表?
- 7. 正確的方法來銷燬鏈表?
- 8. 如何正確銷燬骨幹視圖?
- 9. 如何正確銷燬CKEditor實例?
- 10. C#通過Excel過程銷燬多個Excel對象的正確方法銷燬
- 11. 註銷不會在FOSUserBundle中正確銷燬/清除會話
- 12. android asynctask處理程序如何正確創建它加奇怪無法銷燬活動異常
- 13. 真正銷燬PHP會話?
- 14. 正在銷燬jQuery Sortable/Droppable
- 15. Android - 如何銷燬BroadcastReceiver?
- 16. 的Android銷燬從父
- 17. 銷燬Android應用程序
- 18. Android服務銷燬NullPointerException
- 19. 銷燬或關閉HttpClient Android
- 20. Android-恢復活動中的服務並銷燬它們銷燬
- 21. 銷燬
- 22. angular2銷燬視圖銷燬訂閱
- 23. 如何在Android上正確使用AsyncTask?
- 24. 如何在Android中正確使用AsyncTask
- 25. 正確使用AsyncTask?
- 26. 帶有複選框的確認銷燬
- 27. 銷燬具有指針值的地圖的正確方法
- 28. ActiveRecord - has_many:通過,:依賴=>:銷燬sql是不正確的
- 29. 如何正確銷燬對象,以免造成內存泄漏
- 30. 如何正確銷燬Java中的Apache Commons DBCP池?
看看Droid-fu庫。它簡化了與asyncTask的工作。 – karnage 2011-04-21 09:16:45