美文网首页
Android ANR

Android ANR

作者: ByteCarry | 来源:发表于2019-05-11 12:53 被阅读0次

    Android ANR

    背景

    当应用的UI线程阻塞过长时间,就会触发应用程序无响应(Application No Responding)。

    触发条件

    1. 当应用的Activity处于前台,应用没有在5秒内响应一个输入事件(例如按键或者触摸屏幕)或者广播接收者。
    2. 当没有Activity处于前台,应用的广播接收者没有在相当长的时间内完成执行。

    探测和诊断ANR

    • Android vitals

    • 诊断ANR问题一些可能路径

      1. 主线程进行IO操作

      2. 主线程进行耗时计算

      3. 主线程同步等待另一个进程的绑定调用,而另一个进程需要长时间才能返回。

      4. 主线程阻塞等待另一个线程同步代码的操作

      5. 主线程和其他线程死锁了。

      6. 工作线程持有主线程必须的加锁的资源也会导致ANR

    一些手段

    • 启用严格模式StrictMode有助于发现偶然的主线程IO操作影响。

    • 启用后台ANR对话框(开发者模式-启用所有的ANR).

    • 使用Traceview工具获取应用运行时的跟踪信息,确定主线程繁重操作的地方。

    • ANR发生时会生成追踪文件,分析该文件中的信息有助于查找ANR产生的原因。老版本的OS:/data/anr/traces.txt,新版本的OS:/data/anr/trace_xxx.txt.通过adb导出该文件:

      adb root
      adb shell ls /data/anr
      adb pull /data/anr/<filename>
      
    扫码领红包支持

    相关文章

      网友评论

          本文标题:Android ANR

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