Android常用性能優化方案

2019/4/28
 
android 性能優化
android性能優化在實際開發中會經常應用到,當項目越來越龐大時,性能優化就顯得更加重要,寫出高性能優化代碼不但需要豐富的經驗,而且還需要了解其原理,這樣才有助于我們寫出高性能的代碼,今天我們來總結一下日常開發中常用性能優化方案,看看你都熟悉哪些。 
android性能優化包括:布局優化、繪制優化、內存泄漏優化、響應速度優化、listview優化、Bitmap優化、線程優化等。
 
布局優化
盡量減少布局層級,relativeLayout比LinearLayout的性能差,relativeLayout的性能優于嵌套布局,布局優化的另外一個手段就是采用<include>、<merge>標簽和ViewStub,<include>標簽主要用于布局重用,<merge>標簽一般和<include>標簽去配合使用,它可以降低減少布局的層級,而ViewStub則提供了按需加載的功能,當需要時才會將ViewStub中的布局加載到內存中,這提高了程序的初始化效率。

鄭州APP開發公司,就找河南天頻信息有限公司

繪制優化
繪制優化指View的onDraw方法要避免執行大量的操作,這主要體現在兩個方面: 
(1)onDraw方法中不要創建新的局部對象,因為onDraw方法可能被頻繁的調用,這樣一瞬間會產生大量的臨時對象,這些對象不僅占用了過多的內存,而且還會導致系統頻繁的gc,降低了程序的執行效率。 
(2)onDraw方法中不要執行耗時任務,也不能執行成千上萬次的循環操作,大量的循環十分搶占CPU的時間片,這會造成view的繪制過程不流暢。
 
內存泄漏優化
內存泄漏優化分為兩個方面:
(1)避免寫出內存泄漏的代碼、 
(2)通過分析工具,比如MAT來找出潛在的內存泄漏繼而解決。
 
內存泄漏場景:
(1)靜態變量導致的內存泄漏 
(2)單例模式導致的內存泄漏 
(3)屬性動畫導致的內訓泄漏:屬性動畫中有一種無限循環的動畫,它持有Activity中View的引用,而View又持有Activity,這樣就導致Activity已經不顯示了,但是仍然銷毀不掉,解決方案就是在Activity的onDestroy()方法中將動畫停止。

鄭州APP開發公司,就找河南天頻信息有限公司

響應速度優化
避免在主線程中去做耗時操作,Activity如果5s沒有響應,則會出現ANR,BroadcastReceiver如果 
10s還未執行完操作也會出現ANR。
 
ListView和Bitmap優化
listView優化主要分為三個方面:
(1)使用ViewHolder并避免在getView方法中執行耗時操作 
(2)根據列表的滑動狀態來控制任務的執行頻率,比如當列表快速滑動時不適合開啟大量的異步任務, 
(3)使用硬件加速來使listView的滑動更加流暢
 
Bitmap優化:
主要是通過BitmapFactory.Options來根據需要對圖片進行采樣,采樣的過程主要使用到了BitmapFactory.Options 
來根據需要對圖片進行采樣,采樣的過程主要使用到了BitmapFactory.Options的inSampleSize參數

鄭州APP開發公司,就找河南天頻信息有限公司

線程優化
線程優化的思想是采用線程池,避免程序中存在大量的Thread。線程池可以重用內部的線程,從而避免了線程的創建和銷毀帶來的性能開銷,同時線程池可以有效的控制線程的最大并發數,避免了大量線程因互相搶占系統資源而導致阻塞現象的發生。因此在實際開發中應盡量采用線程池,而不是每次都要創建一個Thread對象。
 
一些性能優化的建議
(1)避免創建過多的對象 
(2)不要過多的使用枚舉類型,枚舉占用的內存空間比整型要大 
(3)常量請使用static final來修飾 
(4)使用一些android也有的數據結構,如SparseArray和Pair 
(5)適當的使用軟引用和弱引用 
(6)采用內存緩存和磁盤緩存 
(7)盡量采用靜態內部類,這樣可以避免潛在的由于內部類而導致的內存泄漏的問題

鄭州APP開發公司,就找河南天頻信息有限公司

浙江体彩61中奖规则 彩经网广西快3 黑龙江十一选五将结果 天津时时彩20分钟开奖 怎么分析股票 2019捕鱼娱乐 河南11选5开奖结果查询 481开奖结果最近120期 2期幸运飞艇计划 什么股票配资平台安全 二分时时彩定位胆技巧