Android ANR分析总结

1、ANR介绍

ANR(Application Not Responding)指的是应用程序无响应,当Android应用程序在主线程上执行长时间运行的操作或阻塞I/O操作时发生。这可能导致应用程序界面冻结或无法响应用户输入。

1、Service ANR:前台20s,后台200s;startForeground超时10s

2、BroadcastReceiver ANR:前台10s,后台60s

3、Input ANR:按键或触摸事件在5s内无响应

4、ContentProvider ANR:10s,少见

2、抓取离线日志

使用CAT或QATT解析dbg文件

解析完成相关Log如下

3、Service ANR

        Service ANR原理,当框架启动APP对应的Service时。一边在框架自身发起一个handler超时消息,一边发送启动Service 的handler消息到APP的主线程。当APP Service中的onCreate方法调用后,会回调框架中的serviceDoneExecutingLocked来取消定超时消息。正常情况下如此

如果是APP本身问题,可以通过SYS_FTRACE搜索serviceCreate来确定执行时长。

同步其他Log进行分析确认。

执行超时消息,触发ANR

1、若binder耗时(比较少见);

2、app主线程执行一些消息耗时,导致service相关的消息得不到执行;

3、Service本身的周期方法onCreate,onStartCommand等执行一些耗时操作;

4、BroacastReceiver 超时

Android中有两种广播机制:

1、静态广播接收者:通过AndroidManifest.xml的标签来申明的BroadcastReceiver。

2、动态广播接收者:通过Context.registerReceiver()方式注册的BroadcastReceiver,动态注册更为灵活,可在不需要时通过unregisterReceiver()取消注册。

从广播发送方式可分为三类:

1、普通广播:通过Context.sendBroadcast()发送,可并行处理

2、有序广播:通过Context.sendOrderedBroadcast()发送,串行处理

3、Sticky广播:通过Context.sendStickyBroadcast()发送

其中前台广播ANR 10s,后台广播ANR 60s

        发送广播的逻辑主要在框架中的BroadcastQueue的函数processNextBroadcastLocked中。对于并行广播mParallelBroadcasts直接全部发送。对于有序广播,每次设置超时时间,发送一条。APP接收到关播后,调用finish来进行下一条循环。

如果是APP本身问题,可以通过SYS_FTRACE搜索broadcastReceiveComp来确定执行时长。

5、Input超时

        检查 Relayout windows时间点(此时 activity 能被看到)。如果发 生 ANR 时,Focus焦点已经切换过来,则需要APP分析,否则需要系统侧进一步分析。

        其中绘制过程比较复杂,相关流程整理如下,后续更新

6、ContentProvider 超时

        后续补充

7、其他相关信息确认

      很多时候,ANR不一定是APP本身的问题,有可能是系统卡顿或者IO问题导致的。需要结合相关ANR Log中的其他信息一起分析。

1、CPU的使用率

2、剩余内存大小

EVENT Log中搜killinfo

参考文档

https://www.cnblogs.com/linghu-java/articles/10307915.html
https://blog.csdn.net/Code1994/article/details/120509705
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/13069.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【comfyui教程】comfyui攻略:故障报错应对指南!

前言 ComfyUI的常见故障和解决,赶紧收藏起来, 在探索ComfyUI的曲折旅途中,最让人心生畏惧的莫过于那漫天的红色方框和层出不穷的报错信息。它们如同不息的风暴,一波未平,一波又起,令无数热忱的初学者在这…

[论文精读]SeqMIA: Sequential-Metric Based Membership Inference Attack

图像领域成员推理攻击 SeqMIA: Sequential-Metric Based Membership Inference Attack http://arxiv.org/abs/2407.15098 ACM CCS 2024 先看overview,猜测文章的方法:训练影子模型,使用影子模型、蒸馏数据集和目标模型共同参与蒸馏任务&am…

机器学习基础02

目录 1.特征工程 1.1特征工程概念 1.2特征工程的步骤 1.3特征工程-特征提取 1.3.1字典特征提取 1.3.2文本特征提取 英文文本提取 中文文本提取 1.3.3TF-IDF文本特征词的稀有程度特征提取 2.无量纲化 2.1归一化 2.2标准化 2.3fit、fit_transform、transform 3.特征…

watermark大模型水印详解

一 watermark定义 模型水印是一种用于模型版权保护的技术,通过向大模型植入水印(触发集数据加上特定的噪声或者标志),使得模型学习到这种特定的噪声或者标志的特征,通过特定的问题可以从大模型的回答中提取出水印进行…

做运维工程师辛苦吗?

你要知道做那一块的运维 网络运维(确保网络稳定安全) 应用运维(应用软件进程监控、服务和端口相应情况、故障处理等) 系统运维(操作系统监控 恢复 等)、 桌面和外围设备运维(计算机终端、外…

关于报错‘cross-env‘ 不是内部或外部命令,也不是可运行的程序

在使用ANT DESIGN PRO这个react框架时出现了cross-env 不是内部或外部命令,也不是可运行的程序 或批处理文件。 如图: 解决办法: 需要全局安装 cross-dev npm install -g cross-env -save-dev 然后重新启动npm start 注意:…

智能座舱多屏项目,中控屏切换语言,后排屏闪黑屏问题

1. 背景 智能座舱多屏项目,中控屏切换语言,后排屏闪黑屏问题 2. 详细分析过程 通过events log查看activity的生命周期:adb shell logcat -b events com.android.rwhvac.view.behind.BehindActivity2 : displayId 2 副屏app com.android.…

基于Multisim温度计温度测量检测测量系统电路(含仿真和报告)

【全套资料.zip】温度计温度测量检测测量系统电路Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 温度检测测量系统 1.温度测量范围为0~200C; 2.三位数…

浅层神经网络

浅层神经网络 浅层神经网络通常指包含一个隐藏层的神经网络。这个网络由输入层、隐藏层和输出层构成: 输入层:输入层负责接收网络的输入特征,通常表示为列向量 x T [ x 1 , x 2 , x 3 ] x^T [x_1, x_2, x_3] xT[x1​,x2​,x3​]&#xff…

解决apidoc不是内部或外部命令,也不是可运行的程序 或批处理文件。

apidoc官网 首先确保安装了apidoc,我这里是全局安装的。 npm install apidoc -g然后打开cmd窗口执行命令时就会报错。 apidoc 不是内部或外部命令,也不是可运行的程序 或批处理文件。 此时只需要找到它,再把它加入环境变量即可了。 win10中npm默认路径:C:\User…

可私有化部署API的集装箱箱号自动识别技术,专业算法厂家

启智畅想作为人工智能行业OCR识别算法厂家,可将集装箱箱号自动识别技术私有化部署,并提供私有化部署的API的接口,在物流行业中正逐渐崭露头角,成为提升效率与精度的关键力量。这一技术不仅打破了传统识别方式的局限,更…

【快速解决】kafka崩了,重启之后,想继续消费,怎么做?

目录 一、怎么寻找我们关心的主题在崩溃之前消费到了哪里? 1、一个问题: 2、查看消费者消费主题__consumer_offsets 3、一个重要前提:消费时要提交offset 二、指定 Offset 消费 假如遇到kafka崩了,你重启kafka之后&#xff0…

第七届中国国际进口博览会 2024长三角G60科创走廊高质量发展要素对接大会举行

11月9日,第七届中国国际进口博览会2024长三角G60科创走廊高质量发展要素对接大会在国家会展中心举行。会上,G60科创走廊九城市共赴进博之约,以全面深化改革为动力,深入推进长三角G60科创走廊走深走实,携手推动科技创新…

一键P图新神器!SeedEdit让图片编辑更快捷!

大家还记得MJ推出的图片编辑功能吗?只需涂抹想要修改的区域,再输入提示词,就能一键更改原图。而现在,豆包大模型团队也推出了类似的功能——SeedEdit,而且更加简单快捷! Ai 智能办公利器 - Ai-321.com 人工…

【数据分析与数据挖掘】决策树算法

决策树的构造的本质是利用训练数据构造一棵决策树,然后利用这棵树所提炼出来的规则进行预测。算法过程大体分为两步:1.利用训练数据构造决策树 2.利用构造的决策树进行预测 分类相关知识 信息熵 信息熵由香农提出,用来衡量事件的不确定性的…

丹摩征文活动|智谱AI引领是实现文本可视化 - CogVideoX-2b 部署与使用

文章目录 前言一、DAMODEL平台特性二、创建CPU云实例三、CogVedioX介绍四、DAMODEL一键部署CogVideoX1. 创建丹摩实例(参考上述介绍)2. 配置环境和依赖3. 模拟与配置文件4. 开始运行4.1 调试4.2 webUI4.3 端口映射 前言 DAMODEL(丹摩智算)是一款专为满足…

22. 记录架构

文章目录 第22章 记录架构22.1 架构文档的用途和受众22.2 符号表示22.3 视图模块视图组件和连接器视图C&C 视图的符号表示 分配视图质量视图 22.4 组合视图22.5 记录行为22.6 视图之外22.7 记录基本原理22.8 架构的利益相关者22.9 实际考虑建模工具在线文档、超文本和维基遵…

Python练习19

Python日常练习 题目: 打印如下九九乘法表 1*11 2*12 2*24 3*13 3*26 3*39 4*14 4*28 4*312 4*416 5*15 5*210 5*315 5*420 5*525 6*16 6*212 6*318 6*424 6*530 6*636 7*17 7*214 7*321 7*428 7*535 7*642 7*749 8*18 8*216 8*324 8*432 8*540 8*648 8*756 8*86…

卸载 Python

文章目录 WindowsmacOSLinux总结 卸载 Python 的方法取决于你使用的操作系统。以下是针对不同操作系统的卸载步骤: Windows 打开控制面板: 按 Win R 打开运行对话框,输入 control,然后按 Enter。或者,从开始菜单搜索并…

使用Wireshark获取USB HID(Human Interface Device)报告描述符

使用Wireshark选择需要获取的USB进行抓取数据,找到设备(host)接收信息的数据 第二栏出现hid报告,右击选择复制流 将复制的内容粘贴到USB标准请求及描述符在线分析工具 - USB中文网 进行解析 以图中获取手写板的数据为例&#xff…