Android 的幾個效能優化

2021-08-20 06:27:50 字數 1392 閱讀 6130

1記憶體優化

使用的分析工具:

memory monitor 工具(android studio自帶)

1.集合類洩漏

如果乙個集合是全域性性變數(比如類中的靜態變數或全域性性map即有靜態引用又或者final指向它)只有新增元素的方法,而沒有清除的機制,就會一直占用記憶體,造成記憶體洩漏。

3.非靜態內部類建立靜態例項。

非靜態內部類缺省會持有外部類的引用,由於靜態例項的生命週期和應用一樣長,導致外部類無法被**。正確做法是:將該內部類設為靜態內部類或將該內部類抽取出來封裝成乙個單例。

4.匿名內部類執行緒非同步導致洩漏

匿名內部類會又外部類的應用,此時將匿名內部類傳入乙個非同步執行緒,此執行緒和activity生命週期不一致時,就造成了activity的洩漏。

5.handler造成的記憶體洩漏

handler、message、messagequeue都是互相關聯在一起的,如果handler傳送的message尚未被處理,則該message及傳送它的handler物件被執行緒messagequeue一直持有而造成記憶體洩漏。可以在activity銷毀的時候清空訊息。

6.盡量避免使用static成員變數

這部分記憶體一直不會被釋放

7.asynctask物件造成的洩漏

asynctask和activity不一定一致,解決方法是:在activity終止的時候,終止asynctask中的後台任務。呼叫cancel()方法不一定靠譜,需要在doinbackground()方法中判斷iscancel()狀態。及時退出。

8.bitmap物件造成的洩漏

bitmap物件不用的時候最好呼叫recycle方法再賦值為null,

無法在16ms內完成渲染,就會引起掉幀。兩個根本原因是:

1.繪製任務太重,繪製一幀內容耗時太長。

2.主線程太忙,根據系統傳遞過來的vsync訊號來時還沒有準備好資料導致丟幀。

優化方法:

1.布局優化,google其api文件中建議view高度不宜超過10層

布局復用,重用layout

提高顯示速度,使用延時viwe載入;

減少層級:使用標籤替換父級布局

使用wrap_content,會增加measure計算成本

刪除控制項的無用屬性

merge:它會刪除多餘的層級

viewstub:當你需要這個布局時才會載入

2 繪製優化:

· 1.移除多餘的背景,移除window預設,按需顯示背景

2.自定義view優化,使用canvas.cliprect()來識別那些區域時可見的,只有在這個區 域才繪製。

apk**:

**混淆。使用proguard **混淆器工具,它包括壓縮、優化、混淆等功能。

資源優化。比如使用 android lint 刪除冗餘資源,資源檔案最少化等。

android的效能優化

高效的利用執行緒,在後台取消一些執行緒的操作 最高效的解決辦法是通過開闢子執行緒來進行耗時操作 如 網路請求,資料庫操作或者複雜的計算等 通過asynctask或通過intentservice來建立後台操作。如果選擇使用intentservice,它會在需要的時候通過乙個工作執行緒 intent 來...

Android效能優化

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

Android效能優化

1.節制地使用service 如果應用程式當中需要使用service來執行後台任務的話,請一定要注意只有當任務正在執行的時候才應該讓service執行起來。另外,當任務執行完之後去停止service的時候,要小心service停止失敗導致記憶體洩露的情況 2.當介面不可見時釋放記憶體 當使用者開啟另...