当前位置:   article > 正文

Android 稳定性(二) ANR和容灾知识点记录_signal_quit

signal_quit

原文地址:https://juejin.cn/post/6844903972587716621#heading-56

ANR优化和容灾建设

1.使用FileObserver监听 /data/anr/traces.txt的变化

缺点:高版本ROM需要root权限。解决方案:海外Google Play服务、国内Hardcoder

2.监控消息队列

通过给主线程的Looper设置一个Printer,打点统计dispatchMessage方法执行的时间,如果超出阀值,表示发生卡顿,则dump出各种信息

无法准确判断是否真正出现ANR,只能说明APP发生了UI阻塞

3.监听Native层发出signal为SIGNAL_QUIT(值为3)的信号事件

字节跳动文章有分享,无法得到完整ANR日志

ANR分类
  • Activity onCreate方法或Input事件超过5s没有完成;
  • BroadcastReceiver前台10s,后台60s;
  • ContentProvider 在publish过超时10s;
  • Service前台20s,后台200s。
原因
  • 主线程有耗时操作
  • 复杂布局
  • IO操作
  • 被子线程同步锁block
  • 被Binder对端block
  • Binder被占满导致主线程无法和SystemServer通信
  • 得不到系统资源(CPU/RAM/IO)

容灾

  1. 功能开关
  2. 跳转中心
  3. 热修复
  4. 安全模式
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/143169?site
推荐阅读