大多數開發人員不知道,即使活動已被finish()
-ed,AsyncTasks啓動它直到完成。 一些開發人員知道,即使在onStop()
中您撥打asyncTask.cancel(true)
,AsyncTask仍會運行直到完成,因爲所有.cancel(true)
都會提出一個標誌,我們應該在每次操作前定期檢查並在doInBackground
之前手動返回。 但是,如果我們正在進行長時間運行的操作,我們無法在操作持續時間內進行檢查,所以我們無效。如何使用蠻力取消AsyncTask
我讀過關於給給定的AsyncTask分配一個線程ID的提示,所以我們可以通過它的ID立即終止線程。
這可能嗎?它是如何完成的?
編輯:這是我做什麼,當我試圖阻止長時間運行的網絡操作:
,然後我可以取消至少此操作。
如何從我們需要顯示到ImageView的互聯網上下載的圖像,但在用戶離開此畫面 - 這是資源的完全浪費。我真的希望能夠取消這個 – 2015-02-09 21:59:41
我已經編輯了我的問題,以便我停止網絡操作 – 2015-02-09 22:02:03
無關緊要 - 無法知道在某個點取消線程是否會導致全局性問題變量在HTTP堆棧中,或者持有一個會使其他線程死鎖的信號量。更不用說AsyncTasks共享線程,因此停止線程可能會破壞所有其他異步任務。現在有可能您的http堆棧可能具有取消功能。如果是這樣的話應該是安全的,讓你的任務覆蓋取消調用它(並記得打電話super.cancel()) – 2015-02-09 22:04:36