美文网首页
ANR产生的原因,以及解决步骤

ANR产生的原因,以及解决步骤

作者: Jacksimo | 来源:发表于2017-03-25 17:35 被阅读0次

ANR全称:Application Not Responding,即应用程序未响应。

主要原因:

应用程序进程中的主线程响应超时,则会产生ANR

(1)应用程序自身引起的。比如:主线程阻塞、挂起、死循环、执行比较长的耗时操作

(2)其他进程引起的。比如:其他进程对CPU的时间占用率过高,导致应用进程抢不到CPU的时间片。

响应超时体现:

(1)应用程序的主线程对输入事件,5s内没有处理完毕

(2)应用程序主线程在执行BroadcastReceiver的onReceive()函数时,10s内没有处理完毕

(3)应用程序主线程在执行Service的各个生命周期函数时,20s内没有处理完毕

解决步骤:

当发生ANR的时候,ActivityManagerService(AMS)会把ANR信息写到LogCat日志中。我们打开Android Device Monitor查看LogCat日志,主要通过ANRManager、ActivityManager等字段过滤出我们想要的信息,保存到文件。文件主要看以下几条信息:

(1)ANR In (Process Name)【Short Component Name】即ANR发生在哪个进程,哪个包/类里,定位到类。

(2)PID  应用程序进程ID

(3)Reason  ANR发生的原因提示。有:Input dispatching timed out.(输入事件引起的ANR);ExecutingService...(Service执行任务引起的ANR);Broadcast of ...(广播引起的ANR)

(4)Process CPU state  分析各进程的时间占用率,来判断某些进程是否长期占用CPU过高,导致应用进程获取不到足够的CPU处理时间,而发生ANR。比如:各进程总的CPU占用率,用户CPU时间占用率、系统CPU时间占用率、iowaitCPU时间占用率

总结:

ANR在日常开发过程中,主要还是应用程序的主线程做了过多耗时操作导致,耗时操作放在子线程即可。

相关文章

  • ANR产生的原因,以及解决步骤

    ANR全称:Application Not Responding,即应用程序未响应。 主要原因: 应用程序进程中的...

  • ANR 产生原因以及原因分析

    ANR:Application Not Responding,即应用无响应 官方给出的产生ANR一般有三种类型:1...

  • ANR产生原因以及定位分析

    什么时候会产生ANR只有当应用程序的UI线程响应超时才会引起ANR,超时产生原因一般有两种。1.UI线程正在响应另...

  • 卡顿

    1 ANR: 1定位: a.查看Logcat,会告诉我们ANR产生的原因以及所在的类 b.通过bug_re...

  • ANR产生的原因

    ANR全称 应用程序无响应(Applicaction Not Responding)只管体验是,当APP进行某个操...

  • Android 性能优化(三)----ANR

    一 . 什么是ANR? 二 . ANR 产生的原因? 只有UI线程阻塞才会发生ANR,发生ANR的根本原因有以下...

  • 【Android】 WatchDog-The way to ge

    ANR产生的原因就不赘述了,这篇文章也不会过多的涉及源码分析 问题分解 要实现捕获ANR功能,简单来说,需要解决以...

  • Android ANR:原理分析及解决办法

    目录:一、ANR说明和原因二、ANR分析办法三、如何降低ANR的概率四、造成ANR的原因及解决办法五、ANR源码分...

  • ANR产生原因和解决办法

    http://blog.sina.com.cn/s/blog_618199e60101kvbl.html 这位大神...

  • Android ANR 相关总结

    ANR产生原因 出现ANR一般有以下几种原因: KeyDispatchTimeout(常见)input事件在5s内...

网友评论

      本文标题:ANR产生的原因,以及解决步骤

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