ANR窗口产生的原因是多种多样的。程序的主线程因为IO读写或网络阻塞而导致被阻塞了,外部存储设备被独占了或系统负荷(load)过高(即不是自己编写的程序的问题,可能是系统或者其他第三方程序导致的问题),都有可能导致ANR窗口的出现。
从Android 2.3开始提供了一个新的类StrictMode,可以帮助开发者改进他们的Android应用,StrictMode可以用于捕捉发生在应用程序主线程 中耗时的磁盘、网络访问或函数调用,可以帮助开发者使其改进程序,使主线程处理UI和动画在磁盘读写和网络操作时变得更平滑,
避免主线程被阻塞,导致ANR窗口的发生。
下面简要说明下Android 2.3新特性StrictMode限制模式的工作方式,见下面的代码:
01 |
public void onCreate() {
|
02 |
if (DEVELOPER_MODE) {
|
03 |
StrictMode.setThreadPolicy( new StrictMode.ThreadPolicy.Builder()
|
04 |
.detectDiskReads()
|
05 |
.detectDiskWrites()
|
06 |
.detectNetwork() // 这里可以替换为detectAll() 就包括了磁盘读写和网络I/O
|
07 |
.penaltyLog() //打印logcat,当然也可以定位到dropbox,通过文件保存相应的log
|
08 |
.build());
|
09 |
StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder()
|
10 |
.detectLeakedSqlLiteObjects() //探测SQLite数据库操作
|
11 |
.penaltyLog() //打印logcat
|
12 |
.penaltyDeath()
|
13 |
.build());
|
14 |
}
|
15 |
super .onCreate();
|
16 |
}
|
上述代码可以在Application的OnCreate中添加,这样就能在程序启动的最初一刻进行监控了。
相关推荐
很全的,不错的strictMode 的简介
介绍android 上运行时调试工具,strictmode,dropbox和tombstone
StrictMode类是Android 2.3 (API 9)引入的一个工具类,可以用来帮助开发者发现代码中的一些不规范的问题,以达到提升应用响应能力的目的
StrictMode意思为严格模式,是用来检测程序中违例情况的开发者工具。最常用的场景就是检测主线程中本地磁盘和网络读写等耗时的...这篇文章给大家介绍Android性能调优利器StrictMode应用分析,感兴趣的朋友一起看看吧
主要介绍了Android StrictMode严格模式的使用方法,需要的朋友可以参考下
strictmode是android在 API9后引入的检测影响app运行流畅性的一种机制。这篇文章给大家介绍了android strictmode运行流程,需要的朋友参考下吧
StrictMode在Android 2.3(API 9)的时候就已经引入了,虽然到当前这个工具年代比较久远 了,但属实还是非常好用的, 在开发阶段使用这个工具,能够很好的帮助发现开发中的一系列不规范的编码, 例如主线程访问网络...
Android在使用HttpURLConnection时常常遇到无法同时支持3.0和2.X版本的问题,本源码演示了如何用同一个包支持两个版本的问题。
当出现提示说: Call requires API level 9 (current min is 8): android.os.StrictMode#setThrea 也就是说版本低
Android 7.0行为变更 ...对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriE
1.6.2 StrictMode 1.7 SQLite 1.7.1 SQLite语句 1.7.2 事务 1.7.3 查询 第1章 Java代码优化 1.1 Android如何执行代码 1.2 优化斐波纳契数列 1.2.1 从递归到迭代 1.2.2 ...
该项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。...
Strict mode是JavaScript1.8.5引进的技术,但还没有浏览器确实可靠的实现了严格模式,所以使用时要小心并且多测试。Strict mode可以应用于整个脚本,也可以适合于单个函数。
android java 调用delphi DX10 datasnap 接口 网络连接不成功的解决办法
1.Android 6.0以上拍照动态权限申请 调用摄像头拍照获取图片这个功能,需要动态申请 照相机权限、SD...StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.bu
Caused by: android.os.FileUriExposedException; t android.os.StrictMode.onFileUriExposed