Android效能優化

2021-07-12 00:15:09 字數 2177 閱讀 3612

1.節制地使用service

如果應用程式當中需要使用service來執行後台任務的話,請一定要注意只有當任務正在執行的時候才應該讓service執行起來。另外,當任務執行完之後去停止service的時候,要小心service停止失敗導致記憶體洩露的情況

2.當介面不可見時釋放記憶體

當使用者開啟另外乙個程式,程式介面已經不再可見的時候,我們應當將所有和介面相關的資源進行釋放。在這種場景下釋放資源可以讓系統快取後台的能力顯著增加,因此也會讓使用者體驗變得更好

只需要在activity中重寫ontrimmemory()方法,然後在方法中監聽trim_memory_ui_hidden這個級別,一旦觸發了之後就說明使用者已經離開了我們的程式,那麼此時就可以及逆行資源釋放操作了。

@override  

public void ontrimmemory(int level)

}

3.避免在bitmap上浪費記憶體

當我們讀取乙個bitmap的時候,有一點要注意,就是千萬不要去載入不需要的解析度。在乙個很小的imageview上顯示一張高解析度的不會帶來任何視覺上的好處,但卻會占用我們相當多的記憶體。

優化小技巧:

1.非靜態內部類會持有外部類的引用。

2.避免建立不必要的物件

(1)需要拼接字串,優先考慮使用stringbuffer或者stringbuilder來進行拼接,而不是加號連線符,因為加號連線符會建立多餘的物件,拼接的字串越長,加號連線符的效能越低。

(2)盡量使用基本資料型別來代替封裝資料型別,如int比integer高效

3.如果不需要訪問乙個物件中的某些字段,只是想呼叫它的某個方法來完成一項通用的功能,那麼可以將這個方法設定成靜態方法,這會讓呼叫的速度提公升15%-20%。

4.重用布局檔案:android提供了和這兩個常用的標籤

在標籤中,我們是可以複寫所有layout屬性的,即include中指定的layout屬性會覆蓋掉原來的layout的屬性。

標籤是作為標籤的一種輔助擴充套件來使用的,它的主要作用是為了防止在引用布局檔案中產生多餘的巢狀。布局巢狀地越多,效能就越差。

5.僅在需要是才載入布局(viewstub) profile_extra為額外要載入的布局檔案

小筆記:

inflate(int resource, viewgroup root, boolean attachtoroot)
1.如果root為null,attachtoroot將失去作用,設定任何值都沒有意義

2.如果root不為null,attachtoroot設為true,則會給載入的布局檔案指定乙個父布局,即root。

3.如果root不為null,attachtoroot設為false,則會將布局檔案最外層的所有的layout屬性進行設定,當該view被新增到父view當中時,這時layout屬性會自動生效。

4.在不設定attachtoroot引數的情況下,如果root不為null,attachtoroot引數預設為true

這樣去inflate xml檔案,layout_width和layout_height是沒有效果的。

任何乙個activity中顯示的介面主要由兩部分組成,標題欄和內容布局。標題欄可以在**中進行控制是否顯示。而內容布局就是乙個framelayout,這個布局的id叫做content,我們呼叫setcontentview()方法時所傳入的局其實就是放到這個framelayout中,這也是為什麼這個方法名叫做setcontentview(),而不是叫做setview()。

handler造成記憶體洩露

handler造成記憶體洩露。new handler(){}的方法會導致handler對外部類activity乙個引用。而message物件會存有對handler引用,因此,如果activity退出時這個message還未處理,就會一直有activity的引用。解決辦法:

建立乙個handler子類,而不是直接通過new handler(){}的方式,在handler裡保持乙個對activity的弱引用。

在handlemessage時首先判斷引用的activity不為空。然後具體針對activity的操作可以通過這個引用的activity做響應的業務處理。

Android效能優化

android效能優化 1.http用gzip壓縮,設定連線超時時間和響應超時時間 http請求按照業務需求,分為是否可以快取和不可快取,那麼在無網路的環境中,仍然通過快取的httpresponse瀏覽部分資料,實現離線閱讀。2.listview 效能優化 1 復用convertview 在geti...

Android效能優化

本篇主要是對 google推出的效能優化典範 進行乙個通篇的整理 主要在於一些具體的優化技巧 至於60fps 掉幀 gc 記憶體抖動 閾值 等等這些效能術語的概念裡面不做多概括,請自行查閱 本篇從以下幾點延伸擴充套件 systrace systrace 在android ddms 裡自帶,可以用來跟...

Android效能優化

如果使用listview或者gridview,注意convertview復用以及viewholder的使用,可以不用每次都建立新的布局以及進行findviewbyid這樣費時的操作,即使某種itemtype型別的itemview數量只有乙個。推薦使用recyclerview,功能更強大,效能更好,並...