Open fred-ye opened 10 years ago
Android从2.3增加了StrictMode这个类,用来帮助开发者发现现程序潜在的,但比较隐蔽的一些问题(如费时的IO操作,不小心在主线程中访问网络),提高程序的健壮性。StrictMode提供了两种策略对Android程序进行检查,一种是常规策略,另一种是对JVM的检测。
Android
StrictMode
JVM
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() //检测磁盘读的status .detectDiskWrites() //检测磁盘写的status .detectNetwork() //检测网络 .penaltyLog() //检测情况在logcat中显示 .build());
如果不想写detectDiskReads(), detectDiskWrites(),detectNetwork(),有一个方法名叫detectAll(),直接用这一个就好。
detectDiskReads()
detectDiskWrites()
detectNetwork()
detectAll()
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() .build());
当开发者违反某类规则时,每种策略都会有不同的方法令开发者知道当时的情况。相关的违反情况可以记录在LogCat中。
Android
从2.3增加了StrictMode
这个类,用来帮助开发者发现现程序潜在的,但比较隐蔽的一些问题(如费时的IO操作,不小心在主线程中访问网络),提高程序的健壮性。StrictMode
提供了两种策略对Android
程序进行检查,一种是常规策略,另一种是对JVM
的检测。如果不想写
detectDiskReads()
,detectDiskWrites()
,detectNetwork()
,有一个方法名叫detectAll()
,直接用这一个就好。JVM
的检测则主要是对内存泄露。配置如下:当开发者违反某类规则时,每种策略都会有不同的方法令开发者知道当时的情况。相关的违反情况可以记录在LogCat中。