Android 2.3起,新增加了一个新的类,叫StrictMode(android.os.StrictMode)。这个类可以用来帮助开发者改进他们编写的应用,并且提供了各种的策略,这些策略能随时检查和报告开

发者开发应用中存在的问题,比如可以监视那些本不应该在主线程中完成的工作或者其他的一些不规范和不好的代码。

  StrictMode的策略和规则

  目前,有两大类的策略可供使用

  一类是关于常用的监控方面的

  Disk Reads 磁盘读

  Disk Writes 磁盘写

  Network access 网络访问

  Custom Slow Code 自定义的运行速度慢的代码分析

  前面三种的意思读者应该很清楚,就是正如它们的名字所示,分别对磁盘的读和写,网络访问进行监控。而第四种的自定义慢代码分析,是仅当访问调用类的时后才触发的,可以通过这种

方法去监视运行缓慢的代码。当在主线程中调用时,这些验证规则就会起作用去检查你的代码。比如,当你的应用在下载或者解析大量的数据时,你可以触发自定义运行速度慢代码的查询分、

析,作用很大。StrictMode可以用于捕捉发生在应用程序主线程中耗时的磁盘、网络访问或函数调用,可以帮助开发者使其改进程序,使主线程处理UI和动画在磁盘读写和网络操作时变得更平

滑,避免主线程被阻塞的发生。

  另一类是关于VM虚拟机等方面的策略

  内存泄露的Activity对象

  内存泄露的SQLite对象

  内存泄露的释放的对象

  其中,内存泄露的Activity对象和内存泄露的SQLite对象都比较好理解,而所谓对关闭对象的检查,主要是去监那些本该释放的对象,比如应该调用close()方法的对象

  相关的违反情况可以记录在LogCat中或者存储在DropBox中(android.os.DropBox)服务中

  如何使用:

  1。放在activity的周期oncreate方法中

    

StrictMode.setThreadPolicy
(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()// 当发生磁盘读操作时输出
.detectDiskWrites()// 当发生磁盘写操作时输出
.detectNetwork()//访问网络时输出,这里可以替换为detectAll() 就包括了磁盘读写和网络I/O
.penaltyLog()// 以日志的方式输出
.build());//内存溢出
StrictMode.setVmPolicy
(new StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()// 以日志的方式输出
.build());

完~~~~~~

转载于:https://www.cnblogs.com/fanglove/archive/2013/03/05/2944327.html

android之StrictMode介绍相关推荐

  1. [转]Android最佳实践之:StrictMode介绍

    [IT168技术]最新的Android平台中(Android 2.3起),新增加了一个新的类,叫StrictMode(android.os.StrictMode).这个类可以用来帮助开发者改进他们编写 ...

  2. android strictmode有什么作用,Android StrictMode介绍

    今天在阅读Wordpress for android 的源代码的时候看到这个. 之前项目中未曾用过,google了一下发现很有用.写篇blog记录下./** * enables "stric ...

  3. Android Fragment 基本介绍

    Android Fragment 基本介绍 Android Fragment 基本介绍 Fragment Android是在Android 3.0 (API level 11)开始引入Fragment ...

  4. Android Pmem相关介绍

    http://fangjian0518.blog.163.com/blog/#m=0 Android Pmem相关介绍 2011-10-18 09:40:26|  分类: Android PMEM | ...

  5. Kotlin on Android 开发环境介绍

    Kotlin 被 Google 采纳为 Android 开发一级编程语言,到现在也一年多了,我们团队从去年 10 月份开始部分项目尝试用 Kotlin 开发,到现在决定推广到全部项目,因为一旦用上 K ...

  6. Android AIDL使用介绍(3) 浅说AIDL背后的Binder

    1.背景 在前面的博客中,我们已经学会了使用AIDL进行跨进程通信,AIDL的使用比较简单,可实际上跨进程通信是一个相当复杂的过程,例如进程A是怎么找到进程B的,如果有一个进程C冒充进程A,进程B又该 ...

  7. Android AIDL使用介绍(2)自定义数据类型的传递

    1.背景 默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int.long.char.boolean 等); String字符串: CharSequence字符序列: List ...

  8. Android Canvas类介绍和Android Draw Rect 坐标图示

    当我们调整好画笔之后,现在需要绘制到画布上,这就得用Canvas类了.在Android中既然把Canvas当做画布,那么就可以在画布上绘制我们想要的任何东西.除了在画布上绘制之外,还需要设置一些关于画 ...

  9. linux wifi开发书籍,Android WIFI开发介绍.pdf

    Android WIFI开发介绍: WifiStateTracker 会创建WifiMonitor 接收来自底层的事件,WifiService 和WifiMonitor 是整个模块的核心.WifiSe ...

  10. Android中SlidingDrawer介绍【安卓进化三十四】

    Android中SlidingDrawer介绍[安卓进化三十四] 安卓中1.5后加入了SlidingDrawer[隐藏式抽屉],设计原理在你的UI布局有限的情况下,放不下太多的控件的时候,可以考虑用这 ...

最新文章

  1. 功能演示:戴尔PowerConnect 8024交换机VLAN的创建与删除
  2. linux centos使用xrdp远程界面登陆
  3. 项目:基于以太网通信,单片机作为客户端,接收CAN-Ethernet的十六进制数据
  4. 13.JAVA基础:八进制,十六进制表示
  5. 【OpenCV 例程200篇】81. 频率域高斯低通滤波器
  6. 更改sql-2008sa密码
  7. 你能理解、不能理解和不需要理解的量子计算
  8. hdu2066一个人的旅行(disjkstra)
  9. mysql运维基础_mysql基础运维
  10. oracle registers,【案例】Oracle RAC强制删除node节点过程的详细笔记
  11. java导入excle表格,并且对表格进行相应的修改,并对表格数据进行整理,最后导出本地表格等一系列操作...
  12. 智能硬件无线通信协议的那些事儿(一)
  13. 表单构建html的页面代码,网页设计表单制作代码 制作一个很简单网页表单代码...
  14. 金蝶k3服务器系统吗,金蝶k3能在云服务器上吗
  15. 模拟斗地主洗牌发牌,并对已发好的拍进行排序(红桃A,方块A, 黑桃2.......)
  16. 19【推荐系统16】CTRCVR联合学习
  17. 电子凸轮追剪曲线生成算法
  18. VideoCodec 入门篇 - 00 (编解码简介)
  19. JVM调优理论与实践最佳结合
  20. win10 无法选择无限网络连接服务器,Win10可以连接无线网络却无法上网的原因及解决方法...

热门文章

  1. 如何在恢复模式下重新启动Mac?
  2. Twitterrifi常用快捷键汇总
  3. dubbo学习笔记一(服务注册)
  4. 浅谈React Hooks
  5. C/C++代码虚拟化保护 在移动端的应用
  6. JAVA——JVM参数设置规则以及参数含义
  7. Java经典设计模式 总览
  8. Easy Building Redis-cluster (轻松搭建reids集群)
  9. [SAP ABAP开发技术总结]以二进制、字符模式下载文件
  10. snmp+mrtg监控-note