封裝性 AsyncTask > Handler > Thread。

 

短時間任務 比較適合 AsyncTask 

長時間任務 比較適合 Thread 或是 java.util.concurrent包提供的各種API,例如ExecutorThreadPoolExecutorFutureTask。(由自己定義Thread跟ThreadPool)

最方便溝通 比較適合 Handler可以方便跟該Thread進行溝通發送數據。

 

Handler類可用於註冊一個線程,並提供一個簡單的通道來向該線程發送數據

 

AsyncTask類封裝了後台進程的創建以及與主線程的同步。它還支持報告正在運行的任務的進度,AsyncTask可以正確,方便地使用UI線程。此類允許執行後台操作並在UI線程上發布結果,而無需操作線程和/或處理程序。

 

Thread基本上是多線程的核心元素,開發人員可以但使用它則必須在自己的代碼中處理:

1. 如果將結果發佈到用戶界面,則與主線程同步,需要再自行定義返回主線程的方法。

2. 取消線程沒有默認值 ,必須自行定義。

3. 沒有默認的線程池,必須自行定義。

4. 如果需要進度必須自行處理。

 

結論:

AsyncTask算是ThreadHandler的輔助類,並不構成通用的線程框架。理想情況下,AsyncTasks應該用於短操作(最多幾秒鐘。)如果需要保持線程長時間運行,強烈建議您使用java.util.concurrent包提供的各種API,例如ExecutorThreadPoolExecutorFutureTask

arrow
arrow
    全站熱搜

    Deyu 發表在 痞客邦 留言(0) 人氣()