网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Android中的ANR简述-创新互联

ANR是Application Not responding,指应用程序未响应,Android系统如果超过预定时间未能得到有效响应或者响应时间过长,都会造成ANR,因为Android系统对于一些事件需要在一定的时间范围内完成。ANR由消息处理机制保证, 核心原理是消息调度和超时处理,Android在系统层实现了一套精密的机制来发现ANR。

创新互联主营苏尼特右网站建设的网络公司,主营网站建设方案,成都app开发,苏尼特右h5微信平台小程序开发搭建,苏尼特右网站营销推广欢迎苏尼特右等地区企业咨询

ANR本质上其实是一个性能的问题,它要求主线程在规定的时间内完成一些操作,如果处理超时,则会认为主线程失去了响应其他操作的努力,主线程的耗时操作,都会降低应用程序的响应能力

ANR机制主体实现在系统层,系统进程设计了不同的超时限制来跟踪消息的处理。所有与ANR相关的消息,都会经过系统进程调度,然后派发到应用进程完成对消息的实际处理。 一旦应用程序处理消息不当,超时限制就起作用了,它会收集一些类似CUP使用情况等信息并报告用户进程无响应情况

检测ANR的核心是消息调度和超时处理

而在应用中基本上只有四种情况会导致ANR

  • Service Timeout:Service在特定的时间内无法处理完成

  • BroadcastQueue Timeout:BroadcastReceiver在特定时间内无法处理完成

  • ContentProvider Timeout:内容提供者执行超时

  • inputDispatching Timeout: 按键或触摸事件在特定时间内无响应。

而整个ANR机制可以分为:ANR检测机制和ANR报告机制

Service检测机制

在ANR机制中,Service运行在应用程序的主线程,如果Service的执行时间超过20秒,就会引发ANR。

Android是通过设置定时消息实现监测Service超时的。定时消息是由AMS的消息队列处理的(system_server的ActivityManager线程)。 AMS有Service运行的上下文信息,所以会在AMS中设置一套超时检测机制

输入事件检测机制

应用程序可以接收输入事件(按键、触屏、轨迹球等),当5秒内没有处理完毕时,则会引发ANR。

ANR报告机制

无论哪种类型的ANR发生以后,最终都会调用AppErrors.appNotResponding()方法,想用户或者开发者报告发生ANR了,表现为弹出提示框,提示用户该程序无法响应,打印相关日志


文章名称:Android中的ANR简述-创新互联
网页链接:http://bjjierui.cn/article/cdopsc.html

其他资讯