面试之ANR,一网打尽
来源:互联网 发布:上瘾网络剧免费观看 编辑:程序博客网 时间:2024/05/30 04:19
#面试之ANR,一网打尽
1、ANR排错一般有三种类型
- KeyDispatchTimeout(5 seconds) --主要是类型按键或触摸事件在特定时间内无响应
- BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成
- ServiceTimeout(20 secends) --小概率事件 Service在特定的时间内无法处理完成
2、哪些操作会导致ANR 在主线程执行以下操作:
- 高耗时的操作,如图像变换
- 磁盘读写,数据库读写操作
- 大量的创建新对象
3、如何避免
- UI线程尽量只做跟UI相关的工作
- 耗时的操作(比如数据库操作,I/O,连接网络或者别的有可能阻塞UI线程的操作)把它放在单独的线程处理
- 尽量用Handler来处理UIThread和别的Thread之间的交互
4、解决的逻辑
- 使用AsyncTask
- 在doInBackground()方法中执行耗时操作
- 在onPostExecuted()更新UI
- 使用Handler实现异步任务
- 在子线程中处理耗时操作
- 处理完成之后,通过handler.sendMessage()传递处理结果
- 在handler的handleMessage()方法中更新UI
- 或者使用handler.post()方法将消息放到Looper中
5、如何排查
- 首先分析log
- 从trace.txt文件查看调用stack,adb pull data/anr/traces.txt ./mytraces.txt
- 看代码
- 仔细查看ANR的成因(iowait?block?memoryleak?)
6、监测ANR的Watchdog
最近出来一个叫LeakCanary
#FC(Force Close) ##什么时候会出现
- Error
- OOM,内存溢出
- StackOverFlowError
- Runtime,比如说空指针异常
##解决的办法
- 注意内存的使用和管理
- 使用Thread.UncaughtExceptionHandler接口
阅读全文
1 0
- 面试之ANR,一网打尽
- 面试问题 一网打尽
- 面试之 ANR 是什么?怎样避免和解决
- Android面试准备:ANR浅析
- ANR错误之 keyDispatchingTimedOut
- ANR错误之 keyDispatchingTimedOut
- Android之 ANR
- ANR错误之 keyDispatchingTimedOut
- android基础之ANR
- ANR错误之 keyDispatchingTimedOut
- 安卓之ANR
- 性能优化之ANR
- Android开发之ANR
- [面试] - 常见重写字符串库函数的面试题 - “一网打尽”
- 面试官:一个能一网打尽的技术问题
- Android面试——OOM及ANR
- Android避免ANR之StrictMode
- Android 系统稳定性之ANR
- 常见的域名报毒解封方法
- 存储过程+嵌套游标结合使用的实例
- 缓存
- POI导出EXCEL经典实现
- requirejs
- 面试之ANR,一网打尽
- python安装selenium
- rxjs5.X系列 —— ErrorHandling/Condition/Mathematical系列 api 笔记
- java类与对象个人理解2
- python 学习与使用小tips
- Python与C#的区别
- ubuntu14.04 64位系统 解决gcc命令不识别头文件问题以及为满足依赖关系问题
- 7、PCIE总线-PCI、PCIE关系及信号定义
- 趣旅:来看看中国人去的最多的境外旅游景点有那些