首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android2.3新增API StrictMode引见

2012-09-19 
android2.3新增API StrictMode介绍google在android2.3中新增了StrictMode API来设置对一个thread的策略(ui

android2.3新增API StrictMode介绍

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

热点排行