日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android无法优化应用,Android应用优化总结

發布時間:2024/8/23 Android 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android无法优化应用,Android应用优化总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:Android應用優化總結

內存泄漏

最常見也是最嚴重的 :持有Activity 與Context引用,生命周期本該短于應用生命周期,該回收的沒被回收掉,導致泄露

檢測手段:leakcanary mit等

Handler泄露

new Handler 替換為 靜態內部類

將持有當前Activity或Context 對象實例化為WeakReference對象

onDestory 時:handler.removeAllMessageAndCallback(null)

高級方案:仍采用靜態內部類,提供CallBack,獨立于使用者,避免Activity與Context直接引用

單例泄露

持有的Activity 使用WeakReference ,Context 使用ApplicationContext

去除不必要的Activity引用

泄露不止是Activity 與context,一旦持有比應用生命周期短的其他對象,也會發生泄露

此時需要考慮使用WeakReference

Fragment 之間靜態屬性引用 泄露

消滅靜態屬性

靜態屬性會一直持有當前Activity或Context引用

Fragment之間通訊可使用接口,Activity實現該接口, onAttach 將Activity轉換為接口對象

Activity操作Fragmeng方式不變

高級方案:可使用MVVM ,ViewModel方式

Cursor 等游標、流的關閉

數據庫操作:增刪改查的游標,文件、網絡操作流

用后close

List

onDestory銷毀List:clear

WebView

onDestory銷毀WebView :removeJava、removeAllView

高級方案:多進程

避免原則

盡可能保證持有的對象及時被回收,必須使用Activity的采用WeakReference,能使用ApplicationContext的不使用 當前Context

其他對象生命周期短于應用的,一旦持有了Context或Activity都有可能發生泄露,盡可能采用WeakReference

代碼優化 優化的數據結構

HashMap 替換為SparseArray 等

枚舉、匿名內部類、反射等

減少使用

布局,涉及過渡繪制等 背景

窗體背景,多余背景,減少過渡繪制有效手段

過渡繪制

include標簽(通常用于公共布局組件)、merge(有效減少層級,但會出現不可控因素,屬性失效等問題)、viewsub

減少不必要的層級

控件優化

比較突出的:

ImageView 與TextView 呈上下左右關系時,優先考慮

TextView增加drawable屬性,即compoundDrawable

布局設置:drawableLeft ,drawableTop, drawableRight,drawableBoottom

圖片文字間距使用:drawablePadding

代碼設置:setCompoundDrawablesRelativeWithIntrinsicBounds(left,top,right,bottoom)

內存、網絡、電池

BitMap的回收,應用不可見的監聽,減少app被系統關閉的幾率

安裝包與第三方

無用資源,大圖,圖片適配,減少不必要的圖片,png替換為.9,簡單圖片代碼實現優先

lib 文件

架構

業務、實現分離

MVP或MVVM等

viewmodel

代碼規則:命名,方法數,自解釋

目的:便于維護

流程

測試環節

如:用例覆蓋,情景覆蓋,功能效果與產品需求匹配度等,數據抓取,可考慮以下方案增強

全員測試

開發階段:

由開發把控,確認主要流程功能完成后打包安排測試,主要為產品確認功能實現情況,及時發現問題,以免后期不斷產生功能修改,耽誤開發進度

測試階段:

除測試外所有相關人員,包括但不限于:前后端開發、產品、項目負責人

上線前:

最后的問題發現修改階段,也是最后的問題修改階段,避免上線前后發生重大問題

測試次數:

問題修改完一批次之后統一回歸,可分為第一輪至第三輪甚至四輪,根據測試及bug情況安排,除第一輪外后續皆主要為回歸,最后一輪進行線上環境測試,確認功能與穩定性,正式上線前可考慮發布小范圍用戶安裝包進行用戶實際環境測試,俗稱灰度

測試用例

測試拿到需求之后可編寫測試用例,此用例可指導其他人進行功能驗證,減少測試人員壓力

目的:控制bug數量,減少測試費時,盡可能的發現隱藏的問題,避免上線后發生重大事故

提升項目質量

數據抓取

可使用Charles,Fiddler

數據類問題可直接由bug測出人員定位,避免其他人浪費時間定位

版本分離

bug分離

上線后的bug確認是否為重大bug是否需要修改,一旦確認可下期修改,則可列為后期版本優先修改內容

api分離

最基本的數據穩定性保持方法

api上線時,安裝包未必會及時被上傳,此時線上環境已經發生變動,而用戶所用仍為老版本,一旦數據不兼容,用戶無法正常使用

api可根據app的versioncode與平臺等多參數進行數據隔離

問題監測

主要為穩定服務

手段包括但不限于:

真實用戶實時崩潰日志:百度等

內嵌的日志收集上傳功能

后臺統計與收集

開發階段的崩潰收集:崩潰截取顯示上傳功能

開發階段

編寫高質量代碼

性能優化

leakcanary 內存泄露

findbug bug 、隱藏問題

removed unused resoures 剔除廢棄資源

lint 找出隱藏問題,優化代碼,重點關注Performance 如泄露,Correctness,Security

大家都在看

805941275 435399051返回搜狐,查看更多

責任編輯:

總結

以上是生活随笔為你收集整理的Android无法优化应用,Android应用优化总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。