有關(guān)Android應(yīng)用性能優(yōu)化的議題,在互聯(lián)網(wǎng)上可以說是眾說紛紜,沒有一個統(tǒng)一的標(biāo)準(zhǔn)和規(guī)范可循。本文主要是結(jié)合作者的實際項目情況以及項目前期的知識儲備,對這一議題加以總結(jié)和概括,本文不會涉及太多代碼的細(xì)節(jié)。僅以解決方案拋磚引玉,歡迎大家指正和補(bǔ)充。 1優(yōu)化日程篇(1)通過分析代碼細(xì)化優(yōu)化點(diǎn); (2)優(yōu)化啟動加載項; (3)數(shù)據(jù)庫處理方式優(yōu)化; (4)優(yōu)化常用操作的性能; (5)內(nèi)存占用優(yōu)化以及性能提升交付。
2優(yōu)化代碼篇(1)避免創(chuàng)建不必要的對象; (2)如果方法用不到成員變量,可以把方法聲明為static,性能提高15%-20%; (3)避免使用getters/setters存取Field,可以把Field聲明為public直接訪問,性能提高三倍; (4)static變量如果不需要修改,應(yīng)使用final修飾符定義為常量; (5)使用增強(qiáng)For語句,性能提高三倍; (6)私有內(nèi)部類要訪問外部類的Field或方法,可以把外部類的Field或方法聲明為包訪問權(quán)限; (7)合理利用浮點(diǎn)數(shù),比整型慢兩倍。
3優(yōu)化常用控件篇 Google的SDK提供的API當(dāng)中的控件在實際項目中也是需要優(yōu)化的,因為SDK提供給我們的是通用版本,為了保證兼容的最大化,很多控件的執(zhí)行性能是可以進(jìn)行提升的,這里以最常見的ListView控件為例,涉及它的優(yōu)化方案可以從如下幾個方面去考慮: (1)構(gòu)建ViewHolder類; (2)啟用convertView緩存; (3)分批加載數(shù)據(jù); (4)延遲(異步)加載數(shù)據(jù); (5)構(gòu)建LRUCache。
4優(yōu)化頁面布局篇 Android布局是通過ViewGroup分層構(gòu)建而來,其結(jié)構(gòu)可以看成樹型結(jié)構(gòu),當(dāng)樹的深度很大或者說層次過多時,頁面布局的復(fù)雜度就變大,繪制頁面的時間就越多。Android界面追求的是炫酷還是復(fù)雜度越高,盡量用最少復(fù)雜度的布局構(gòu)建成的界面才是開發(fā)者的實際追求??梢岳肁ndroid SDK目錄的tools文件夾下的hierarchyviewer工具來查看每個界面布局層次結(jié)構(gòu),探尋層次結(jié)構(gòu)優(yōu)化點(diǎn)。例如:兩層LinearLayout牽引ImageButton和TextView的布局可以改由一個RelativeLayout來牽引,這樣布局繪制ImageButton和TextView時間更短,相應(yīng)的布局復(fù)雜度也會減一。
|