Android性能調優利器StrictMode

jopen 9年前發布 | 11K 次閱讀 Android開發 移動開發 StrictMode

作為Android開發,日常的開發工作中或多或少要接觸到性能問題,比如我的Android程序運行緩慢卡頓,并且常常出現ANR對話框等等問題。既然有性能問題,就需要進行性能優化。正所謂工欲善其事,必先利其器。一個好的工具,可以幫助我們發現并定位問題,進而有的放矢進行解決。本文主要介紹StrictMode 在Android 應用開發中的應用和一些問題。

什么是StrictMode

StrictMode意思為嚴格模式,是用來檢測程序中違例情況的開發者工具。最常用的場景就是檢測主線程中本地磁盤和網絡讀寫等耗時的操作。

嚴在哪里

既然叫做嚴格模式,那么又嚴格在哪些地方呢?
在Android中,主線程,也就是UI線程,除了負責處理UI相關的操作外,還可以執行文件讀取或者數據庫讀寫操作(從Android 4.0 開始,網絡操作禁止在主線程中執行,否則會拋出NetworkOnMainThreadException)。使用嚴格模式,系統檢測出主線程違例的情況會做出相應的反應,如日志打印,彈出對話框亦或者崩潰等。換言之,嚴格模式會將應用的違例細節暴露給開發者方便優化與改善。

具體能檢測什么

嚴格模式主要檢測兩大問題,一個是線程策略,即TreadPolicy,另一個是VM策略,即VmPolicy。

ThreadPolicy

線程策略檢測的內容有

  • 自定義的耗時調用 使用detectCustomSlowCalls()開啟
  • 磁盤讀取操作 使用detectDiskReads()開啟
  • 磁盤寫入操作 使用detectDiskWrites()開啟
  • 網絡操作 使用detectNetwork()開啟

VmPolicy

虛擬機策略檢測的內容有

  • Activity泄露 使用detectActivityLeaks()開啟
  • 未關閉的Closable對象泄露 使用detectLeakedClosableObjects()開啟
  • 泄露的Sqlite對象 使用detectLeakedSqlLiteObjects()開啟
  • 檢測實例數量 使用setClassInstanceLimit()開啟
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!