說一說安卓中的性能優化

起因

在面試時,面試官問道:說一說在安卓中怎麼對性能進行優化。
剛聽到這個問題時,有點懵,平常做開發的時候沒有對這方面進行過系統的總結,那姑且今天好好總結一下吧。

正文

該文中,主要對渲染、內存、功耗、網絡等方面進行優化。

渲染方面:

在Android中,系統要求每一幀都要在16ms內繪製完成,這個速度大概每秒60幀,這樣才能保證體驗的流暢度。

造成UI卡頓的幾個原因:

1、 佈局層級過多,花費很多時間去重新繪製控件;
2、 過度繪製,屏幕上某個像素在同一幀被繪製了多次;
3、 在UI線程中進行輕微的耗時操作,比如讀取一個很小的文件;
4、 同一時間內,動畫執行的次數過多,導致CPU或者GPU負載過重;
5、 頻繁的觸發GC機制;
6、 不必要的資源及邏輯。

常用檢測工具:

1、 Androidstudio的Hierarchy Viewer,可以使用該工具檢測各個view的繪製時間;
2、 手機自帶的ShowGPUOverdraw檢測Overdraw。

幾個解決方案:

1、 刪除或合併多餘或者不必要的層級;
2、 移除不必要的背景,比如在佈局文件中已經設置過background,然後在java代碼中又設置了一遍;
3、 使用merge標籤合併佈局;
4、 使用惰性標籤ViewStub實現佈局的動態加載。

內存方面:

安卓作爲移動設備,內存相對臺式電腦的內存來說還是相當寶貴的。
容易出現的幾個問題:
1、 對程序內存的管理不夠合理高效導致的內存浪費;
2、 使用對象或者方法不合理導致的內存泄漏。

常用檢測工具:

1、 Androidstudio自帶的Memory monitor;
2、 LeakCanary。

幾個解決方案:

1、 在不影響功能的情況下,使用效率較高的類代替效率較低的類;
2、 避免內存泄漏,擴大內存使用。

功耗方面:

關於該問題,一般指的是減少應用的耗電量,增加用戶的使用時間,因爲如果用戶發現這個應用耗電量巨大的話有兩種可能,卸載和減少使用量。
造成功耗不合理的其中幾個原因:
1、 不合理的頁面刷新;
2、 不合理的動畫使用、IO操作、佈局等造成的CPU或GPU負載過重等;
3、 不必要的後臺進程。
幾個解決方案:
1、 優化刷新方式,可以使用局部刷新;
2、 使用相關工具,檢測造成CPU或GPU負載過重的原因並優化;
3、 去掉或減少不必要的後臺進程中的任務。

網絡方面:

網絡也是我們開發中經常使用到的方面。
網絡方面直接上需要注意的幾個地方:
1、 合併網絡請求,減少請求次數,從而達到減少建立連接的次數,減少耗時;
2、 當數據量大時可以進行壓縮傳輸或者進行分批次加載;
3、 將網絡數據進行緩存,避免頻繁的請求網絡。

目前想到也只有這幾個方面,如果還有哪些沒想到的請留言交流呀

參考鏈接:
https://www.jianshu.com/p/95566b2711b6
https://www.jianshu.com/p/43c9d827dc2a
https://blog.csdn.net/Ch97CKd/article/details/79847070
https://blog.csdn.net/qq980106800/article/details/87811924

加入我的行列

QQ羣:

image.png

微信公衆號

分享小知識,記錄你的小故事呀
微信公衆號.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章