封裝性 AsyncTask > Handler > Thread。
短時間任務 比較適合 AsyncTask
長時間任務 比較適合 Thread 或是 java.util.concurrent包提供的各種API,例如Executor,ThreadPoolExecutor和FutureTask。(由自己定義Thread跟ThreadPool)
最方便溝通 比較適合 Handler可以方便跟該Thread進行溝通發送數據。
Handler類可用於註冊一個線程,並提供一個簡單的通道來向該線程發送數據
AsyncTask類封裝了後台進程的創建以及與主線程的同步。它還支持報告正在運行的任務的進度,AsyncTask可以正確,方便地使用UI線程。此類允許執行後台操作並在UI線程上發布結果,而無需操作線程和/或處理程序。
Thread基本上是多線程的核心元素,開發人員可以但使用它則必須在自己的代碼中處理:
1. 如果將結果發佈到用戶界面,則與主線程同步,需要再自行定義返回主線程的方法。
2. 取消線程沒有默認值 ,必須自行定義。
3. 沒有默認的線程池,必須自行定義。
4. 如果需要進度必須自行處理。
結論:
AsyncTask算是Thread和Handler的輔助類,並不構成通用的線程框架。理想情況下,AsyncTasks應該用於短操作(最多幾秒鐘。)如果需要保持線程長時間運行,強烈建議您使用java.util.concurrent包提供的各種API,例如Executor,ThreadPoolExecutor和FutureTask。
全站熱搜
留言列表