使用適當解析度和大小的圖片:圖片解析度-資源文件夾 及時回收記憶體:bitmap.recycle() Android3.0後不需要釋放了 使用圖片緩存:記憶體緩存,硬碟緩存 對常量使用static修飾符 使用靜態方法,能夠比普通方法提高15%左右的訪問速度 減少不必要的成員變數,這點在Android L ...
- 佈局優化
- UI渲染機制,系統每次渲染時間(所有程式邏輯)保持在16ms內。檢測UI渲染時間的工具->>開發者選項-Profile GPU Rending。View的onDraw方法中不要做耗時任務,也不能執行成千上萬次的迴圈操作。
- 避免Overdraw, ->> Enable GPU Overdraw
- 優化佈局層級,View樹高度不超過10
- 避免嵌套過多無用佈局
- 對於一些共通 的UI,使用<include>標簽重用Layout
- 使用<ViewStub>實現View的延遲載入
- Hierarchy Viewer工具的使用 ->>之後可查看官方API文檔
- 記憶體優化
- bitmap優化
- 使用適當解析度和大小的圖片:圖片解析度-資源文件夾
- 及時回收記憶體:bitmap.recycle() Android3.0後不需要釋放了
- 使用圖片緩存:記憶體緩存,硬碟緩存
- 代碼優化
- 對常量使用static修飾符
- 使用靜態方法,能夠比普通方法提高15%左右的訪問速度
- 減少不必要的成員變數,這點在Android Lint工具上已經集成檢測,如果一個變數可以定義為局部變數,則會建議你不要定義為成員變數【用完就扔?
- 儘量不要使用枚舉,少用迭代器
- 對Cursor、Receiver、Sensor、File等對象,要非常註意對它們的創建、回收與註冊、解註冊。
- 避免使用IOC框架,IOC通常使用註解、反射來進行實現,大量使用反射會帶來性能的下降
- 使用RenderScript,OpenGL來進行非常複雜的繪圖操作
- 使用SurfaceView來替代View進行大量,頻繁的繪圖操作【如二維碼掃描
- 儘量使用視圖緩存,而不是每次都執行inflate()方法解析視圖
- bitmap優化
- Lint工具:提示冗餘佈局
- Memory Monitor工具:對記憶體進行實時分析
- 使用TraceView工具優化App性能【需要具體學習應用】p241
- 使用MAT工具分析App記憶體狀態【需要具體學習應用】p244
- 使用Dumpsys命令分析系統狀態p247