Android艺术——性能优化问题
這次分析方向,我們主要包括:布局優化、繪制優化、內存泄漏優化、響應速度優化、ListView優化、Bitmap優化、線程優化。
?
布局優化:盡量的減少布局的層級,這意味著Android繪制時的工作量會變少。
標簽:<include>的使用只支持Android:layout的開頭屬性
??<merge> 可以去除多余的那一層LinearLayout
??ViewStub 繼承了View,本身不參與任何的布局和繪制過程,其意義在于按需加載所需的布局文件,還不能支持<merge>標簽。
?
繪制優化:指的是View的onDraw方法要避免執行大量的操作;
1)onDraw中不要創建新的布局對象,這是因為onDraw方法可能會被頻繁調用,會一瞬間產生大量的臨時對象,占用過多的內存導致系統更加頻繁gc,降低程序的執行效率。
2)onDraw不要做耗時的任務,過多的循環操作會搶占CPU的時間片,這樣造成View的繪制過程不流暢。官方標準View的繪制幀率保證60fps是最佳。我們需要盡量降低onDraw方法的復雜度。
?
內存泄漏優化:內存泄漏并不會導致程序功能異常,但是會導致Android程序的內存占用過大,會提高內存溢出的發生幾率。內存泄漏分析工具MAT。我們需要盡量規避潛在的內存泄漏。會存在場景:1.靜態變量導致的內存泄漏;2.單例模式導致的內存泄漏;3.屬性動畫導致的內存泄漏;具體以后詳解
?
響應速度優化:核心就是避免在主線程中做耗時的操作,采用異步的方式執行耗時操作。如果主線程做太多的耗時事情,會導致Activity啟動黑屏現象。會導致出現ANR,出現之后不要著急,通過分析traces文件即可定位。
?
ListView和Bitmap優化:
ListView的優化無非在于
1)采用ViewHolder并且避免在getView中執行耗時操作;
2)根據列表的滑動狀態來控制任務的執行頻率;
3)嘗試開啟硬件加速來是ListView的滑動更加的流暢;
Bitmap優化之前已經說到過了,主要圖片的采樣,BitmapFactory.Options的inSampleSize參數。
?
線程優化:最重要的思想就是采用線程池,避免程序中存在的大量Thread。線程池可以重用內部的線程,從而避免了線程的創建和銷毀所帶來的性能開銷,同時線程池還能有效地控制線程池的最大并發數,避免大量的縣因為互相搶占系統資源從而導致阻塞現象的發生。
?
其他優化建議:1)避免創建過多的對象;2)不要過多的使用枚舉,其占有的內存空間要比整形大;3)常量使用static final來修飾;4)適當使用軟引用和弱引用;5)采用內存緩存與磁盤緩存;6)盡量使用靜態內部類;7)使用一些Android特有的數據結構。
轉載于:https://www.cnblogs.com/llw1996/p/7447007.html
總結
以上是生活随笔為你收集整理的Android艺术——性能优化问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gerrit上sshkey设置问题
- 下一篇: FFplay源代码分析:整体流程图