標籤:無限 使用 include 一個 釋放 des 好的 迴圈 logs
接上篇《android開發藝術探索》讀書筆記(十四)--JNI和NDK編程
No1:
如果<include>制定了這個id屬性,同時被包含的布局檔案的根項目也制定了id屬性,那麼以<include>指定的id屬性為準
No2:
繪製最佳化
1)onDraw中不要建立新的局部對象
2)onDraw方法中不要做耗時的任務
No3:
記憶體泄露最佳化
情境一:靜態變數導致的記憶體泄露:
如果靜態變數持有了一個Activity,會導致Activity無法及時釋放。
解決辦法:1使用Application的Context。 2慎用statistic關鍵字
情境二:單例模式導致的記憶體泄露:
因為單例模式的生命週期和Application保持一致,所以如果單例模式持有了一個Activtiy,會導致Activity無法及時釋放
解決方案:盡量的使用Application的全域Context。
情境三:屬性動畫導致的記憶體泄露:
因為Activity的View被動畫持有,而View又持有Activity,如果動畫無限迴圈,會導致Activity無法及時釋放。
解決方案:Activity的onDestory中調用animator.cancel()來停止動畫
No4:
當一個進程發生ANR了以後,系統會在/data/anr目錄下建立一個檔案traces.txt。
No5:
效能最佳化的建議
1)避免建立過多的對象
2)不要過多使用枚舉,枚舉佔用的記憶體空間要比整形大
3)常量請使用static final來修飾
4)使用一些Android特有的資料結構,比如SparseArray和Pair等,它們都具有更好的效能
5)適當使用軟引用和弱引用
6)採用記憶體緩衝和磁碟緩衝
7)盡量採用靜態內部類,這樣可以避免潛在的由於內部類而導致的記憶體泄露
《android開發藝術探索》讀書筆記(十五)--Android效能最佳化