fred-ye / summary

my blog
43 stars 9 forks source link

[Android]StrictMode的使用 #19

Open fred-ye opened 10 years ago

fred-ye commented 10 years ago

Android从2.3增加了StrictMode这个类,用来帮助开发者发现现程序潜在的,但比较隐蔽的一些问题(如费时的IO操作,不小心在主线程中访问网络),提高程序的健壮性。StrictMode提供了两种策略对Android程序进行检查,一种是常规策略,另一种是对JVM的检测。

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                 .detectDiskReads() //检测磁盘读的status
                 .detectDiskWrites() //检测磁盘写的status
                 .detectNetwork()   //检测网络
                 .penaltyLog() //检测情况在logcat中显示
                 .build());

如果不想写detectDiskReads(), detectDiskWrites(),detectNetwork(),有一个方法名叫detectAll(),直接用这一个就好。

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                 .detectLeakedSqlLiteObjects()
                 .detectLeakedClosableObjects()
                 .penaltyLog()
                 .penaltyDeath()
                 .build());

当开发者违反某类规则时,每种策略都会有不同的方法令开发者知道当时的情况。相关的违反情况可以记录在LogCat中。