Android性能優化——線程優化

Android線程調度機制

線程調度機制

  • 分時調度模型:所有的線程輪流獲得CPU使用權,平均分配每個線程佔用的CPU時間
  • 搶佔式調度模型:優先讓可運行池中的優先級高的線程佔用CPU,優先級相同隨機選擇一個線程

Android線程調度機制
Android的線程調度機制是搶佔式調度模型
線程優先級(nice):默認情況下,新創建的線程的優先級默認與母線程一致
線程分組:Android還分前臺線程與後臺線程

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)

Android異步方式

  • Thread:直接創建一個線程
  • AsyncTask:爲UI線程與工作線程之間進行快速的切換提供一種簡單便捷的機制。適用於當下立即需要啓動,但是異步執行的生命週期短暫的使用場景()
  • handerThread:爲了某些毀掉方法或者等待某些任務的執行設置一個專屬的線程,並提供線程任務的調度。(handerThread繼承了Thread+handler機制)參考文章:手把手教你使用HandlerThread
  • ThreadPool:把任務分解成不同的單元,分發到各個不同的線程上,進行同時併發處理。
  • IntentService:適合用於執行由於UI觸發的Service任務,並可以在後臺任務執行的情況通過一定的機制反饋給UI(IntentService繼承自Service,裏面用的是HandlerThread)
  • Loaders:Android系統提供了LoaderManager(裏面用的AsyncTask)

Android線程優化

  • 線程指定線程名,對線程分組便於問題排查
  • 合理指定線程優先級
  • 採用線程池複用線程
  • 合適的場景選擇合適的異步方式
  • 控制整個應用的總線程數量,應用各個模塊複用線程
  • 不再使用的HandlerThread需要退出
  • 不要直接使用創建線程,應該採用線程池
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章