ANR简单见解
来源:互联网 发布:刷qq币软件 编辑:程序博客网 时间:2024/05/20 15:40
什么是ANR?ANR:Application Not Responding,即应用无响应。ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现ANR,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。1、ANR排错一般有三种类型KeyDispatchTimeout(5 seconds) --主要是类型按键或触摸事件在特定时间内无响应BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成ServiceTimeout(20 secends) --小概率事件 Service在特定的时间内无法处理完成2、哪些操作会导致ANR 在主线程执行以下操作:1. 高耗时的操作,如图像变换 2. 磁盘读写,数据库读写操作 3. 大量的创建新对象3、如何避免UI线程尽量只做跟UI相关的工作耗时的操作(比如数据库操作,I/O,连接网络或者别的有可能阻塞UI线程的操作)把它放在单独的线程处理尽量用Handler来处理UIThread和别的Thread之间的交互4、解决的逻辑1. 使用AsyncTask 1. 在doInBackground()方法中执行耗时操作 2. 在onPostExecuted()更新UI 2. 使用Handler实现异步任务 1. 在子线程中处理耗时操作 2. 处理完成之后,通过handler.sendMessage()传递处理结果 3. 在handler的handleMessage()方法中更新UI 4. 或者使用handler.post()方法将消息放到Looper中5、如何排查首先分析log从trace.txt文件查看调用stack,adb pull data/anr/traces.txt ./mytraces.txt看代码仔细查看ANR的成因(iowait?block?memoryleak?)6、监测ANR的Watchdog
0 0
- ANR简单见解
- 快速简单处理anr
- KMP算法之简单见解
- volatile的个人简单见解
- ANR
- ANR
- ANR
- anr
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- Python学习--16 正则表达式
- MyBatis学习笔记(三)Mapper动态代理开发
- 【c++】类与对象
- 微信小程序的页面跳转和参数传递 —— 微信小程序教程系列(6)
- 网络爬虫ip代理服务器【程序样例】
- ANR简单见解
- 李开复给中国大学生的第六封信——选择的智慧
- 《数学之美》中的自然语言处理
- UCI提供给shell和lua使用的配置接口
- iOS证书错误
- 计算机 计算机语言 常见的DOS命令
- 08cms房产7.1旗舰版+7.0升级包+最新WAP手机触屏版:微信公众平台新增多个重量级功能,无任何限制
- Android Studio 学习之 Android SDK快速更新
- 类似于微博个人中心