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.當介面不可見時釋放記憶體 當使用者開啟另...