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

歡迎訪問 生活随笔!

生活随笔

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

Android

android strictmode有什么作用,Android 性能优化 之 StrictMode

發布時間:2025/3/8 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android strictmode有什么作用,Android 性能优化 之 StrictMode 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

8種機械鍵盤軸體對比

本人程序員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎么選?

StrictMode概述

StrictMode 是用來檢測程序中違例情況的開發者工具。使用StrictMode,系統檢測出主線程違例的情況會做出相應的反應,如日志打印,彈出對話框亦或者崩潰等。換言之,嚴格模式會將應用的違例細節暴露給開發者方便優化與改善。

StrictMode

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

ThreadPolicy

線程策略檢測的內容有自定義的耗時調用使用detectCustomSlowCalls()

開啟磁盤讀取操作使用detectDiskReads()

開啟磁盤寫入操作使用detectDiskWrites()

開啟網絡操作使用detectNetwork()

VmPolicy

虛擬機策略檢測的內容有

Activity泄露 使用detectActivityLeaks()

開啟未關閉的Closable對象泄露 使用detectLeakedClosableObjects()

開啟泄露的Sqlite對象 使用detectLeakedSqlLiteObjects()

開啟檢測實例數量 使用setClassInstanceLimit()開啟

StrictMode 應用

在Application 的onCreate()方法中添加如下代碼。1

2

3

4if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());

}

通過過濾StrictMode,查看檢測結果。1adb logcat | grep "StrictMode"

例子分析

文件沒有關閉1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17E/StrictMode( 2649): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.

E/StrictMode( 2649): java.lang.Throwable: Explicit termination method 'end' not called

E/StrictMode( 2649): at dalvik.system.CloseGuard.open(CloseGuard.java:184)

E/StrictMode( 2649): at java.util.zip.Inflater.(Inflater.java:82)

E/StrictMode( 2649): at java.util.zip.GZIPInputStream.(GZIPInputStream.java:103)

E/StrictMode( 2649): at java.util.zip.GZIPInputStream.(GZIPInputStream.java:88)

E/StrictMode( 2649): at com.baidu.simeji.util.StringGzipCompressUtil.unCompress(StringGzipCompressUtil.java:59)

E/StrictMode( 2649): at com.baidu.simeji.prediction.ServerPrediction$1.onReceive(ServerPrediction.java:136)

E/StrictMode( 2649): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:978)

E/StrictMode( 2649): at android.os.Handler.handleCallback(Handler.java:739)

E/StrictMode( 2649): at android.os.Handler.dispatchMessage(Handler.java:95)

E/StrictMode( 2649): at android.os.Looper.loop(Looper.java:145)

E/StrictMode( 2649): at android.app.ActivityThread.main(ActivityThread.java:6922)

E/StrictMode( 2649): at java.lang.reflect.Method.invoke(Native Method)

E/StrictMode( 2649): at java.lang.reflect.Method.invoke(Method.java:372)

E/StrictMode( 2649): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)

E/StrictMode( 2649): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

內存泄漏1

2

3E/StrictMode( 7796): class com.baidu.simeji.sticker.store.StickerPackCloudPreviewActivity; instances=2; limit=1

E/StrictMode( 7796): android.os.StrictMode$InstanceCountViolation: class com.baidu.simeji.sticker.store.StickerPackCloudPreviewActivity; instances=2; limit=1

E/StrictMode( 7796): at android.os.StrictMode.setClassInstanceLimit(StrictMode.java:1)

StickerPackCloudPreviewActivity本應存在一個實例,現在有兩個。表明內存泄漏。

#Android 性能優化#

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的android strictmode有什么作用,Android 性能优化 之 StrictMode的全部內容,希望文章能夠幫你解決所遇到的問題。

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