【Android】使用StrictMode(严格模式)检查不规范问题


只要我们是人,我们一定会犯错误。

如果有勇气承认错误,总是可以原谅的:李小龙

那么,你如何知道和纠正在Android应用程序开发过程中出现的错误呢?这里,Android提供了一个工具。

严格模式

StrictMode是一个开发工具,可以检测你可能正在做的事情,并引起你的注意,以便你可以修复它们。StrictMode最常用于捕获应用程序主线程上的意外磁盘或网络访问,其中接收UI操作并进行动画处理。使磁盘和网络操作脱离主线程使得更平滑,更灵敏的应用程序。通过保持应用程序的主线程响应,还可以防止向用户显示[ANR对话框],听上去是不是很屌!

那么我们要如何使用它呢?

使用方法

你可以在Application中做全局使用,也可以单独对Activity进行检测,总之,只需要在onCreate()方法中调用如下代码即可:

 public void onCreate() {
     if (DEVELOPER_MODE) {
         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                 .detectDiskReads()
                 .detectDiskWrites()
                 .detectNetwork()   // or .detectAll() for all detectable problems
                 .penaltyLog()
                 .build());
         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                 .detectLeakedSqlLiteObjects()
                 .detectLeakedClosableObjects()
                 .penaltyLog()
                 .penaltyDeath()
                 .build());
     }
     super.onCreate();
 }

使用严格模式检测问题时,你可以决定应该要启用哪些方法。例如,使用penaltyLog()您可以在adb logcat使用应用程序时看到输出,以查看检测结果。

代码中几种方法含义分别是:

penaltyDeath():检查整个过程。
penaltyDeathOnNetwork():检查在任何网络使用情况下崩溃过程。
penaltyDialog():检测到的错误行为时向开发者显示一个讨厌的对话框。
penaltyFlashScreen():检查到问题时闪烁屏幕。
penaltyLog():将检测到的问题情况记录到系统日志中。

如果严格模式检查出了问题告诉你,你可以使用有各种各样的工具来帮助解决这些问题:线程Handler,AsyncTask,IntentService等,是不是觉得StrictMode耳目一新啦。特别是,在我们实际的项目中,正常活动生命周期中,通常需要频繁的磁盘访问和网络请求的情况,使用StrictMode可以查找你意外发生的事情。

StrictMode可用于启用和执行可以检查和报告的各种策略。这些政策通常包括最佳实践类型编码问题,例如监视不应该在主线程上执行的操作以及其他调皮或懒惰代码写法。

StrictMode有各种策略。每项政策都有不同的规定。每个策略还有各种方法来显示何时出现问题。

虽然在市面上现在还不流行,毕竟一般都是专门做测试的兄弟们检(nue)查(dai)我们写的程序。


所以,从现在开始使用StrictMode,让你的代码编写更加严谨!

如果文章对你有帮助,麻烦点个喜欢支持一下啦~谢谢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。