AsyncTask中關於線程的問題

AsyncTask主要有兩個部分:一個是與主線程的交互,異步獲取數據,通知主線程更新ui。另外一個是負責線程的管理調度。

1.線程任務的調度,、:在項目內部會創建一個進程作用域的線程池來管理要運行的任務,當你調用asynctask。execute後,asynctask會把任務交給線程池。由線程池來管理創建Thread和運行Thread。

2、在android 2.3以前,內部線程池限制是5個,如果同一進程中,最多同時運行的AsyncTask只有5個,並且這種限制,在2.3版本以前是無法解決的。如果項目中需要大量使用後臺線程去執行任務,那麼只能自己去創建thread。

3、到了3.0以後,execute提交任務,按先後順序,每次只運行一個,也就按先後順序,每次只啓動一個線程執行一個任務,完成之後才執行第二個任務。但是可以通過executeOnExecutor方法。來自定義線程池數量的大小。

關於線程使用的幾點建議:

1、如果你的應用沒有與主線程交互,那麼直接使用thread就好了。

2、對於一般性的數據庫查詢,少量的io操作都沒有必要開啓線程

3、由於創建線程的開銷是非常大的,所以當有大量線程執行任務時,一定要創建線程池,無論是還設有Asynctask還是thread

4、對於想要立即開始執行的異步任務,要麼直接使用thread,要麼單獨創建線程池提供給AsyncTask,默認的AsyncTask不一定會立即執行你的任務。

發佈了13 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章