美文网首页
Android ANR分析总结

Android ANR分析总结

作者: codedreamzone | 来源:发表于2017-07-13 09:42 被阅读0次

ANR的类型

  1. KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应
  2. BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成
  3. ServiceTimeout(20 seconds) --小概率类型 Service在特定的时间内无法处理完成
  • Service ANR,前台进程中Service生命周期不能超过20秒,后台进程中Service的生命周期不能超过200秒。 在启动Service时,抛出定时消息SERVICE_TIMEOUT_MSG或SERVICE_BACKGOURND_TIMEOUT_MSG,如果定时消息响应了,则说明发生了ANR
  • Broadcast ANR,前台的“串行广播消息”必须在10秒内处理完毕,后台的“串行广播消息”必须在60秒处理完毕, 每派发串行广播消息到一个接收器时,都会抛出一个定时消息BROADCAST_TIMEOUT_MSG,如果定时消息响应,则判断是否广播消息处理超时,超时就说明发生了ANR
  • Input ANR,输入事件必须在5秒内处理完毕。在派发一个输入事件时,会判断当前输入事件是否需要等待,如果需要等待,则判断是否等待已经超时,超时就说明发生了ANR

详见ANR机制及问题分析

如何分析ANR

需要经过日志获取、问题定位和场景还原三个步骤。

  1. 分析Log。
    从LOG可以看出ANR的类型,CPU的使用情况,如果CPU使用量接近100%,说明当前设备很忙,有可能是CPU饥饿导致了ANR,如果CPU使用量很少,说明主线程被BLOCK了,如果IOwait很高,说明ANR有可能是主线程在进行I/O操作造成的。
  1. 从trace.txt查看stack调用情况。
  2. 看代码
  3. 仔细查看ANR的成因(iowait?block?memoryleak?)

详见[[转]Android ANR 分析解决方法]

相关文章

  • Android ANR(二)-触发原理

    接之前的文章:Android ANR问题(一)-基本分析方法,这篇文章总结一下ANR触发原理。 一、Service...

  • Android ANR分析总结

    ANR的类型 KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无...

  • Android ANR问题专题

    android ANR发生的原因总结和解决办法 ANR的全称是application not responding...

  • Android ANR 分析学习总结

    1. 什么情况下会发生anr (1). KeyDispatchTimeout(5 seconds) --主要类型按...

  • Android ANR问题分析总结

    为什么会产生 一般是在“主”线程中进行一些长时间的操作时,会发生ANR。这是事件循环线程,如果繁忙,则Androi...

  • ANR问题分析

    本文站在系统角度来简单总结下ANR分析的一般套路。 一、ANR简介 1.1 ANR定义 ANR(Applicati...

  • 高通平台LOG目录分析

    高通平台日志目录分析 anr: android(system)日志中搜索“ANR in”关键字, 可以得到信息1、...

  • ANR(1)---理解Android ANR的信息收集过程

    移步ANR系列基于Android 6.0源码, 分析当发生ANR时系统的处理过程 一 ANR场景 无论是四大组件或...

  • ANR系列

    ANR(0)---理解Android ANR的触发原理ANR(1)---理解Android ANR的信息收集过程A...

  • Android ANR分析

    1) ANR一般有三种类型: 1:KeyDispatchTimeout(5 seconds) --主要类型 按键或...

网友评论

      本文标题:Android ANR分析总结

      本文链接:https://www.haomeiwen.com/subject/maebhxtx.html