美文网首页
14. Android ANR分析

14. Android ANR分析

作者: Jsonzhang | 来源:发表于2017-04-14 10:10 被阅读84次

参考资料:http://hjxandhmr.github.io/2016/07/01/Android-ANRAnalysis/

ANR发生的条件

  1. 5s内没有响应用户输入事件
  2. 10s内广播接收器没有处理完毕
  3. 20s内服务没有处理完毕

如何避免ANR的发生

基本的思路就是将IO操作在工作线程来处理,减少其他耗时操作和错误操作

  • 使用AsyncTask处理耗时IO操作。
  • 使用Thread或者HandlerThread时,调用Process.setThreadPriority(Process.THREADPRIORITY
    BACKGROUND)设置优先级,否则仍然会降低程序响应,因为默认Thread的优先级和主线程相同。
  • 使用Handler处理工作线程结果,而不是使用Thread.wait()或者Thread.sleep()来阻塞主线程。
  • Activity的onCreate和onResume回调中尽量避免耗时的代码
    BroadcastReceiver中onReceive代码也要尽量减少耗时,建议使用IntentService处理。

1.获取ANR日志

  • 查看traces.txt是否存在(首先Android设备需要root)

adb shell ----su----cd data----ls(应该会有一个anr文件夹)

Paste_Image.png
adb shell----su----cd data/anr----ls(如果有anr日志会有一个traces.txt文件) Paste_Image.png
  • 怎样将traces.txt文件copy到指定位置?

adb pull /data/anr/traces.txt d:/mytraces.txt(在d盘中新建mytraces.txt,建议输入这个命令时粘贴复制,否则容易出错)

从哪几方面入手解决ANR

  • 首先分析log
  • 从trace.txt文件查看调用stack.
  • 看代码
  • 仔细查看ANR的成因(iowait?block?memoryleak?)

相关文章

  • 14. Android ANR分析

    参考资料:http://hjxandhmr.github.io/2016/07/01/Android-ANRAna...

  • 高通平台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 分析

    Application Not Responding 1. 产生的原因 主线程任务执行时间过长(阻塞), 系统消息...

  • Android ANR分析

    什么是ANR ANR(Application Not Responding)就是应用在规定的时间内没有响应用户输入...

  • Android ANR分析

    ANR基础知识 ANR全称Application not response,即程序无响应。 ANR的分类 KeyD...

  • Android ANR分析

    [toc] ANR分析 ANR触发场景 在android系统中,特定的操作需要在一定时间内完成,超过限定的时间就会...

  • 记录一次ANR的分析过程

    Android开发中难免碰到ANR问题,但是网上关于ANR的文章并不多,那我就写一篇最近工作中碰到ANR的分析过程...

网友评论

      本文标题:14. Android ANR分析

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