Android性能優化之線程優化

  1. 不能通過非UI線程對View進行操作。因爲Android的UI不是安全的,如果View能被不同的線程所訪問或修改,那麼就可能在程序的執行期間,產生不可預期的行爲或者併發錯誤。
  2. 使用線程時,避免在循壞中使用同步,因爲獲取和釋放鎖的操作代價很大。會引起CPU資源的損耗。
  3. 處理多線程以及線程間通信時,使用HandlerThread來操作,它內部包裝了Looper,記得不用的時候退出/釋放資源哦。
  4. 當工作線程與UI線程之間通信的時候,推薦使用AsyncTask(Android 7.0後內部任務變成串行處理,不再會出現以前並行時超過任務數執行飽和策略的情況)
  5. Loader可以用來代替AsyncTask的某些情況,因爲Loader的生命週期是獨立的(與Application Context有關),當Activity/Fragment銷燬重建時,它仍然在,而且它特別使用異步操作,比如AsyncTaskLoader代替AsyncTask也可以實現後者的功能,但是生命週期完全獨立於Activity。切記Loader使用完記得銷燬。
  6. 當你的Service不需要交互時,請使用可以自動停止的IntentService。
  7. 當你希望延長BroadcastReceiver的生命週期時,例如啓動一個後臺線程IntentService。在onReceiver中調用BroadcastReceiver.goAsync(),它會返回一個PendingResult對象,這時,廣播接收器的生命週期會延長持續到PendingResult.finish()方法調用。
  8. 線程池最好用構造方法手動創建,而不要用Executors來直接調用工廠方法,這樣利於明白線程池的運行規則,避免用了錯誤的線程池導致資源耗盡。
  9. 給線程一個好聽的名字,調試時候用。
  10. 線程池設置線程的存活時間,以保證空閒線程準確釋放。

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章