美文网首页
ANR原理与问题分析

ANR原理与问题分析

作者: leo567 | 来源:发表于2020-03-09 15:08 被阅读0次
  1. ANR工作原理
    Application Not Responding,应用程序无响应。工作线程向检测线程发送请求,检测线程初始化检测状态,开始计时,工作线程业务执行完成后向检测线程发送清除检测请求,检查线程在计时时间内未收到清除请求则进行超时处理并发送ANR弹窗。
  2. ANR分类
  • 应用ANR:按键超时(5s),广播处理超时(10s),服务处理超时(20s)
  • 系统ANR:Watchdog超时(60s) ,监控整个system_service进程的,超时会重启系统
  1. ANR问题的分析方法
  • 原因:
    1)在主线程里面有耗时的操作,或者逻辑里面有异常进入死循环的状态。
    2)线程之间通信造成阻塞(trace文件),或者线程挂起后没有被唤起。
    3)其他进程抢占CPU。
  • ANR现场
    1)apps/android.txt 出错进程,出错原因,CPU占用率
    2)anr/traces.txt 出错进程内部线程的堆栈信息
  1. 广播ANR分析
    广播投递即开始计时,并设置超时消息。广播事件共享UI线程消息队列,要排队,此队列消息处理直接影响广播事件的处理。调用onReceive()处理广播,处理效率直接影响计时。finishReceiver()通知AMS不及时,将影响到超时消息的移除。
    'adb shell dumpsys activity broadcasts' 查看广播注册信息,查看广播都有谁接收。

  2. ANR问题的分析方法
    1)查找ANR进程原因。
    2)检查cpu负载情况,cpu是否被抢占
    3)查看调用堆栈,分析代码(耗时,死循环,线程阻塞或挂起)

  3. ANR问题的优化方向

  • 避免在主线程进行复杂的操作
  • 广播接收不要进行复杂的操作
  • 服务生命周期函数不要进行复杂操作
  • 编码注意边界条件控制 避免死循环
  • 在设计及编码阶段避免出现同步/死锁

相关文章

  • ANR原理与问题分析

    ANR工作原理Application Not Responding,应用程序无响应。工作线程向检测线程发送请求,检...

  • ANR

    ANR原理分析 什么是ANR ANR(Application Not Responding)就是应用在规定的时间内...

  • Android ANR(二)-触发原理

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

  • ANR相关-Handler

    前言 要分析ANR问题,必须先了解Handler的基本原理; 常见的ANR原因包括A.主线程有耗时操作,如有复杂的...

  • 应用与系统稳定性第二篇---ANR的监测与信息采集

    第一篇文章-应用与系统稳定性第一篇---ANR问题分析的一般套路主要梳理了几个ANR案例,讲了分析ANR问题的一般...

  • 安卓ANR问题1_ANR问题类型及产生原理

    ANR问题类型及产生原理 ANR(Application Not Responding):即应用无响应. 在日常使...

  • Android卡顿优化 | ANR分析与实战(附ANR-Watc

    本文要点ANR概述发生ANR后Android系统的执行流程ANR-WatchDog原理与实战ANR的传统解决套路A...

  • ANR详解

    说到ANR,首先提出以下三个问题 ANR是什么ANR什么时候出现ANR发生的原理 带着这三个问题我们进入本次的话题...

  • ANR

    ANR触发原理(what triggers ANR?)

  • ANR 问题分析

    http://www.jianshu.com/p/545e5e7bbf94 http://duanqz.githu...

网友评论

      本文标题:ANR原理与问题分析

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