Android效能最佳化問題總結

來源:互聯網
上載者:User

標籤:開啟   measure   開發人員   ast   sync   win   相對   最佳化問題   eal   

  效能最佳化這塊,分為UI效能最佳化、記憶體最佳化、資料庫最佳化、網路最佳化、耗電最佳化等等。可以從1.如何發現問題,2.怎麼解決問題,3.解決效果對比,這幾個方面去描述。舉個簡單例子——UI最佳化,可以從 UI出現什麼問題(卡頓不流暢),怎麼尋找問題(手機開發人員許可權>GPU過度繪製 發現層級問題,TraceView CPU使用情況分析),怎麼解決問題(降低層級、自訂View繪圖出現問題等),解決問題後效能再次對比。

一、UI最佳化

a.合理選擇RelativeLayout、LinearLayout、FrameLayout,RelativeLayout會讓子View調用2次onMeasure,而且布局相對複雜時,onMeasure相對比較複雜,效率比較低,LinearLayout在weight>0時也會讓子View調用2次onMeasure。LinearLayout weight測量分配原則。

b.使用標籤

c.減少布局層級,可以通過手機開發人員選項>GPU過渡繪製查看,一般層級控制在4層以內,超過5層時需要考慮是否重新排版布局。

d.自訂View時,重寫onDraw()方法,不要在該方法中建立對象,否則容易觸發GC,導致效能下降

e.使用ListView時需要複用contentView,並使用Holder減少findViewById載入View。

f.去除不必要背景,getWindow().setBackgroundDrawable(null)

g.使用TextView的leftDrawabel/rightDrawable代替ImageView+TextView布局

二、記憶體最佳化

主要為了避免OOM和頻繁觸發到GC導致效能下降

a.Bitmap.recycle(),Cursor.close,inputStream.close()

b.大量載入Bitmap時,根據View大小載入Bitmap,合理選擇inSampleSize,RGB_565編碼方式;使用LruCache緩衝

c.使用 靜態內部類+WeakReference 代替內部類,如Handler、線程、AsyncTask

d.使用線程池管理線程,避免線程的建立

e.使用單例持有Context,需要記得釋放,或者使用全域上下文

f.靜態集合對象注意釋放

g.屬性動畫造成記憶體泄露

h.使用webView,在Activity.onDestory需要移除和銷毀,webView.removeAllViews()和webView.destory()

備:使用LeakCanary檢測記憶體泄露

三、響應速度最佳化

Activity如果5秒之內無法響應螢幕觸碰事件和鍵盤輸入事件,就會出現ANR,而BroadcastReceiver如果10秒之內還未執行操作也會出現ANR,Serve20秒會出現ANR 為了避免ANR,可以開啟子線程執行耗時操作,但是子線程不能更新UI,因此需要Handler訊息機制、AsyncTask、IntentService進行線程通訊。

備:出現ANR時,adb pull data/anr/tarces.txt 結合log分析

四、其他效能最佳化

a.常量使用static final修飾

b.使用SparseArray代替HashMap

c.使用線程池管理線程

d.ArrayList遍曆使用常規for迴圈,LinkedList使用foreach

e.不要過度使用枚舉,枚舉佔用記憶體空間比整型大

f.字串的拼接優先考慮StringBuilder和StringBuffer

g.資料庫儲存是採用批量插入+事務

Android效能最佳化問題總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.