`
FariyTale
  • 浏览: 193615 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android2.3新增API StrictMode介绍

阅读更多

google在android2.3中新增了StrictMode API来设置对一个thread的策略(ui线程或者分线程),它主要检测了读写操作,访问网络,数据库读写等耗时的操作并将其以log或者dialog等形式打印出来。分析这些日志,我们可以尽快找出程序运行缓慢的原因进而优化代码,避免ANR(Application Not Responding)窗口的出现。

启用StrictMode
推荐的使用StrictMode的方式是,在开发阶段,打开它,在发布应用前,关闭它。
例如:在你的应用中,onCreate():

 public void onCreate() {

    if (DEVELOPER_MODE) { 
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() //构造StrictMode

                .detectDiskReads() //当发生磁盘读操作时输出

                .detectDiskWrites()//当发生磁盘写操作时输出

                .detectNetwork()  //访问网络时输出,这里可以替换为detectAll() 就包括了磁盘读写和网络I/O

                .penaltyLog()  //以日志的方式输出

                .build());

        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()

                .detectLeakedSqlLiteObjects() //探测SQLite数据库操作

           .penaltyLog() //以日志的方式输出

                .penaltyDeath()

                .build());

    }

    super.onCreate();

} 

当触发策略中的操作时系统会打印出一条StrictMode日志,格式如下:

02-27 10:03:56.122: DEBUG/StrictMode(16210): StrictMode policy violation; ~duration=696 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2 
02 02-27 10:03:56.122: DEBUG/StrictMode(16210):     at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:745)  

 另外说明两点:

1.在android2.3版本直接在ui线程中访问网络会报错

2.ANR窗口会在程序阻塞或者耗时超过5秒的运算后弹出 

分享到:
评论

相关推荐

    Eclipse错误解决方法

    当出现提示说: Call requires API level 9 (current min is 8): android.os.StrictMode#setThrea 也就是说版本低

    Android严苛模式StrictMode使用详解

    StrictMode类是Android 2.3 (API 9)引入的一个工具类,可以用来帮助开发者发现代码中的一些不规范的问题,以达到提升应用响应能力的目的。举个例子来说,如果开发者在UI线程中进行了网络操作或者文件系统的操作,...

    Android性能调优利器StrictMode应用分析

    StrictMode意思为严格模式,是用来检测程序中违例情况的开发者工具。最常用的场景就是检测主线程中本地磁盘和网络读写等耗时的...这篇文章给大家介绍Android性能调优利器StrictMode应用分析,感兴趣的朋友一起看看吧

    strictMode介绍

    很全的,不错的strictMode 的简介

    android strictmode_dropbox_tombstone介绍

    介绍android 上运行时调试工具,strictmode,dropbox和tombstone

    Android通过webservice连接SqlServer实例(Android4.0可运行)

    Android通过webservice连接SqlServer实例(Android4.0可运行)从原博http://blog.csdn.net/zhyl8157121/article/details/8169172下载下来的demo,看了评论和其它文章后修改,解决了Android2.3以上StrictMode模式下不...

    StrictModeUtils.java

    StrictMode在Android 2.3(API 9)的时候就已经引入了,虽然到当前这个工具年代比较久远 了,但属实还是非常好用的, 在开发阶段使用这个工具,能够很好的帮助发现开发中的一系列不规范的编码, 例如主线程访问网络...

    Android 7.0行为变更 FileUriExposedException解决方法

    Android 7.0行为变更 ...对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriE

    详解Android StrictMode严格模式的使用方法

    Android 2.3提供一个称为严苛模式StrictMode的调试特性,Google称该特性已经使数百个Android上的Google应用程序受益。那它都做什么呢?它将报告与线程及虚拟机相关的策略违例。一旦检测到策略违例policy violation,...

    Android HttpURLConnection中 StrictMode同时支持3.0以上和3.0以下版本

    Android在使用HttpURLConnection时常常遇到无法同时支持3.0和2.X版本的问题,本源码演示了如何用同一个包支持两个版本的问题。

    Android StrictMode运行流程(推荐)

    strictmode是android在 API9后引入的检测影响app运行流畅性的一种机制。这篇文章给大家介绍了android strictmode运行流程,需要的朋友参考下吧

    androidN 7.0安装APK方法

    Caused by: android.os.FileUriExposedException; t android.os.StrictMode.onFileUriExposed

    Android应用性能优化

     1.1 Android如何执行代码   1.2 优化斐波纳契数列   1.2.1 从递归到迭代   1.2.2 BigInteger   1.3 缓存结果   1.4 API等级   1.5 数据结构   1.6 响应能力   1.6.1 推迟初始化   ...

    Android.UI基础教程]

    1.4.4 用DDMS截屏 1.4.5其他工具 1.5 结束语 第2章 创建第一个应用 2.1 创建一个应用 2.2 开始使用Android视图 2.3 排布视图2.3.1 FrameLayout 2.3.2 TableLayout 2.3.3 LinearLayout 2.3.4RelativeLayout 2.3.5 ...

    精通ANDROID 3(中文版)1/2

    2.3 Hello World!  2.4 AVD  2.5 剖析Android应用程序的结构  2.6 分析Notepad应用程序  2.6.1 加载和运行Notepad应用程序  2.6.2 分解应用程序  2.7 了解应用程序生命周期  2.8 调试应用程序  ...

    xmljava系统源码-ChoseHead:调用系统相机、相册、剪裁图片并上传(常用于上传头像,兼容Android7.0)

    xml java系统源码 ChoseHead 调用系统相机、相册、剪裁图片并上传(常用于上传头像,兼容Android7.0) 由于在Android 7.0 采用了StrictMode API政策禁,其中有一条限制就是对目录...android:name="android.support.v4.

Global site tag (gtag.js) - Google Analytics