Android-ANR全解析&华为AGC性能管理解决ANR案例集,flutter跳转第三方应用

本文详细介绍了Android应用无响应(ANR)问题的原因、难点及解决思路,通过分析日志、CPU使用情况来定位问题。同时,通过华为AGC(AppGallery Connect)的性能管理服务,展示了如何实时监控ANR、快速定位和解决ANR问题,包括死锁、IO资源不足和主线程死循环等案例。
摘要由CSDN通过智能技术生成

注意:每一次新的ANR问题的发生,会把之前的ANR信息覆盖掉。

我们可以通过adb命令将traces文件导出到本地。

adb root
adb shell ls /data/anr
adb pull /data/anr/

2.3 读取关键日志信息

1)在log中找到ANR发生信息:
Traces文件中的关键字,例如:

09-24 15:20:20.211 1001 1543 1570 XXXXXXX: ANR in xxxxxx
09-24 15:20:20.211 1001 1543 1570 XXXXXXX: PID: xxxxx
09-24 15:20:20.211 1001 1543 1570 XXXXXXX: Reason: xxxxxx

其中:

  • ANR in中,包括导致ANR的包名,类名

  • PID 中,为发生ANR的进程PID

  • Reason 中,为导致ANR的原因,例如keyDispatchingTimedOut

2)找到CPU Usage信息

09-24 15:20:20.211 1001 1543 1570 XXXXXX: CPUusage from xxx to xxx ago xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx
09-24 15:20:20.211 1001 1543 1570 XXXXXX: CPUusage from xxx to xxx later xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx

其中

  • ago 表示ANR发生前的CPU的使用情况

  • later表示ANR发生后的CPU的使用情况

  • 重点关注xxx%TOTAL: xxx% user + xxx% kernel + xxx% iowait,可通过这几项了解到CPU的占用情况。

2.4 具体分析

分析CPU usage以后,如若还是无法找出问题原因,则需要进一步分析trace文件。traces文件中详细记录了发生ANR前后该进程的各个线程的Stack,一般从主线程的stack入手分析,查看分析ANR问题发生前,应用是否有异常。

其中不同场景下的ANR问题情况不大相同,需要具体情况具体分析,此处就不展开详细描述。

3、ANR问题难点及破题思路

3.1 ANR难点

用户在应用内的绝大部分操作,比如按钮点击,加载资源,页面跳转等操作,都需要有App的主动反馈,但ANR发生时,在用户等待数秒后,仅会弹出一个“应用无响应”的弹窗给用户,这会给用户带来“应用难用”的感觉,极其影响用户体验。

但是,现网中的ANR问题又很难处理,问题包括但不限于:

  1. 平时的测试难以覆盖,毕竟ANR经常出现在老设备、弱网络环境的场景下,测试难以做到全场景覆盖。

  2. 对于现网应用的ANR问题,如果问题非必现,则定位难度较高,需要有可以复现问题的实际设备在身边,才能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值