栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ANR是什么?怎样避免和解决ANR

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ANR是什么?怎样避免和解决ANR

Application Not Responding,即应用无响应

出现的原因有三种:a)KeyDispatchTimeout(5 seconds)主要类型按键或触摸事件在特定时间内无响应b)BroadcastTimeout(10 seconds)BoradcastReceiver在特定的时间内无法处理c)ServiceTimeout(20 seconds)小概率类型Service在特定的时间内无法处理完成

避免ANR最核心的一点就是在主线程减少耗时操作。通常需要从那个以下几个方案下手:a)使用子线程处理耗时IO操作b)降低子线程优先级,使用Thread或者HandlerThread时,调用Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)设置优先级,否则仍然会降低程序响应,因为默认Thread的优先级和主线程相同c)使用Handler处理子线程结果,而不是使用Thread.wait()或者Thread.sleep()来阻塞主线程d)Activity的onCreate和onResume回调中尽量避免耗时的代码e)BroadcastReceiver中onReceiver代码也要尽量减少耗时操作,建议使用intentService处理。intentService是一个异步的,会自动停止的服务,很好解决了传统的Service中处理完耗时操作忘记停止并销毁Service的问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/360078.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号