【Android面试八股文】什么是ANR?如何分析和定位ANR?如何避免ANR?

news2024/12/22 22:57:58

文章目录

  • 一、ANR概述
  • 二、触发ANR的主要场景
  • 三、Android四大组件中的潜在的ANR风险
  • 五、避免ANR的实践建议
  • 六、ANR的产生原因与出现的场景
    • 6.1 原因:
    • 6.2 出现场景:
  • 七、ANR的定位与分析
    • 7.1. ANR分析思路——traces
    • 7.2 ANR其他分析思路与相关日志
      • 7.2.1 分析logcat思路
      • 7.2.2 分析kernel思路
      • 7.2.3 分析cpuinfo思路
      • 7.2.4 分析meminfo思路
    • 7.3. traces.txt重要字段
  • 八、ANR分析案例
    • 8.1 分析案例一:Input ANR
    • 8.2 分析案例二:在系统的方法上的锁没释放
    • 8.3 主线程被其他线程lock,导致死锁
    • 8.4 分析案例三 内存问题
    • 8.4 分析案例四 GC问题
  • 参考

在Android开发中,应用程序无响应(ANR)是一个常见的问题,特别是当应用程序的主线程被长时间阻塞时。本文将深入探讨ANR的定义、常见触发场景以及如何避免这些问题。

一、ANR概述

ANR(Application Not Responding)是指Android系统在检测到应用程序主线程长时间阻塞而无法响应用户输入时触发的错误。

当用户界面线程(UI线程)被阻塞超过一定时间限制时,系统会认为应用程序已经崩溃或停止响应,并显示一个强制关闭应用的对话框,以确保用户体验。

二、触发ANR的主要场景

在Android开发中,ANR(Application Not Responding)主要可以分为以下几种类型,这些类型涵盖了不同情况下可能触发ANR的场景:

在这里插入图片描述

  1. Input Dispatching Timeout
    当一个输入事件(如触摸屏事件或按键事件)在特定时间内无法及时处理时,系统会认为应用程序无响应。通常情况下,该超时限制为5秒

  2. BroadcastQueue Timeout
    前台广播接收器(Foreground Broadcast Receivers)在特定时间内无法处理完所有广播消

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

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

相关文章

机器学习:分类模型的评估指标

在机器学习中,评估分类模型的性能是至关重要的环节。选择合适的评估指标能够帮助我们全面了解模型的表现,尤其是在不同的数据分布和应用场景下。下面详细介绍一些常用的分类模型评估指标。 混淆矩阵(confusion matrix)是模式识别…

【Linux】TCP协议【下二】{流量控制/滑动窗口/延迟应答/捎带应答/拥塞控制}

文章目录 1.流量控制--利用“窗口大小”字段协商数据量大小1. 1第一次的时候,怎么保证发送数据量是合理的1.2第三次握手ack的时候,可以携带数据!1.3流量控制,属于可靠性还是属于效率? 2.滑动窗口--利用滑动窗口解决批量…

Apple Intelligence或将登陆Vision Pro,但不会在今年实现|TodayAI

在上个月的WWDC 2024主题演讲中,Apple公司发布了其全新的Apple Intelligence,但没有提及这一技术将应用于其最新产品之一——Apple Vision Pro。 Apple Intelligence是iPhone制造商为应对消费者硬件中日益增长的人工智能技术需求和竞争而推出的解决方案…

【高性能服务器】多线程并发模型

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​​ 对于常见的C/…

在CenteOs7上安装mysql8.0(Super详细版)

在CenteOs7上安装mysql8.0 为什么用Mysql8.0?如何下载下载地址需要提前准备下载步骤 服务器上安装如何上传到服务器?通过wget下载到服务器并解压 开始安装非必须安装如果全部安装执行顺序 安装完后,启动mysql使用“systemctl”检测mysqld服务…

前端基础:JavaScript(篇一)

目录 JavaScript概述 JavaScript历史: 须知: 基本语法 变量 代码 运行 数据类型 1、数值型(number): 代码 运行 2、布尔型(boolean): 代码 运行 3、字符串型: 代码 运行 4、 undefined类型 代码…

Boss直聘,无良厂商,乱封号

耽误招工作,瞎吉儿封号 哥们单身 需要女生多的公司 问一下都不行,什么尿性 直接就给你封了 装什么呢 辣鸡boss 倒闭吧赶紧 我是狗子,希望你倒闭!

GPON-GPON帧链路层知识学习

前言: 引用: gpon学习_gpon帧结构-CSDN博客 了解 GPON 技术 - Cisco GPON、XG(S)-PON基础_网络_门牙会稍息-开放原子开发者工作坊 gpon学习_gpon帧结构-CSDN博客 广域网宽带接入技术七GPON技术_gtc帧-CSDN博客 https://www.cnblogs.com/aliyunyun/…

顶顶通语音信箱手机助手拦截方案

在电话自动外呼系统,常见的问题是被叫号码开通了语音信箱,或者运营商自动给开通了小秘书服务,一旦电话打不通,就会先播放一个类似这样的提示音,你拨打的电话已经开启了来电小秘书,请在滴声后留言。还有一个…

什么是智能仓储

智能仓储是指利用先进的信息技术、物联网技术以及自动化设备,实现仓储管理过程的智能化,通过集成多种现代技术,使得仓库管理更加高效、精准和透明。以下是智能仓储的一些关键特点和技术: --------------------------------------…

夸克网盘拉新暑期大涨价!官方授权渠道流程揭秘

夸克网盘拉新暑期活动来袭,价格大涨!从7月1日开始持续两个月,在这两个月里夸克网盘拉新的移动端用户,一个从原来的5元涨到了10元。这对做夸克网盘拉新的朋友来说,真的是福利的。趁着暑期时间多,如果有想做夸…

迅为2K1000核心板商业级/工业级/全国产

硬件配置 国产龙芯处理器,双核64位系统,板载2G DDR3内存,流畅运行Busybox、Buildroot、Loognix、QT5.12 系统! 接口全板载4路USB HOST、2路千兆以太网、2路UART、2路CAN总线、Mini PCIE、SATA固态盘接口、4G接口、GPS接口WIF1、蓝牙、Mini HD…

中原汉族与北方游牧民族舞蹈文化在这段剧中表现得淋漓尽致,且看!

中原汉族与北方游牧民族舞蹈文化在这段剧中表现得淋漓尽致,且看! 《神探狄仁杰》之使团喋血记是一部深入人心的历史侦探剧,不仅以其曲折离奇的案情和狄仁杰的睿智形象吸引观众,更以其对唐代文化的精准再现而备受赞誉。#李秘书讲写…

大数据、人工智能、云计算、物联网、区块链序言【大数据导论】

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 本篇序言前 必看 【大数据导论】—大数据序言 这是…

自动编码器简单理解及简单使用描述

1. 什么是自动编码器? 自动编码器分为编码器和解码器,其中解码器只在训练阶段用到。具体过程就是: 首先,输入训练样本,编码器对输入样本进行编码,对其进行降维,直到到达某个瓶颈层&#xff1b…

财务RPA工具——探索用于财务自动化的常见RPA工具

近年来数字化浪潮正席卷各大行业,数字化转型成为企业通向成功的一条必经之路。而财务管理作为企业经营过程中的有力支撑,是企业数字化转型的一个关键切入点。如今越来越多的数字技术在现代财务工作中得以应用,以提升财务工作效率,…

JavaScript——对象的创建

目录 任务描述 相关知识 对象的定义 对象字面量 通过关键字new创建对象 通过工厂方法创建对象 使用构造函数创建对象 使用原型(prototype)创建对象 编程要求 任务描述 本关任务:创建你的第一个 JavaScript 对象。 相关知识 JavaScript 是一种基于对象&a…

JVM线上监控环境搭建Grafana+Prometheus+Micrometer

架构图 一: SpringBoot自带监控Actuator SpringBoot自带监控功能Actuator&#xff0c;可以帮助实现对程序内部运行情况监控&#xff0c;比如监控内存状况、CPU、Bean加载情况、配置属性、日志信息、线程情况等。 使用步骤&#xff1a; 1. 导入依赖坐标 <dependency><…

H5漂流瓶交友源码_社交漂流瓶H5源码

简介&#xff1a; 一种流行的娱乐性社交新潮流&#xff0c;年轻人玩得比较多。和盲盒有点类似 社交漂流瓶搭建教程 环境&#xff1a;Nginx 1.20.1-MySQL 5.6.50-PHP-7.3 上传源码至网站根目录&#xff0c;创建并导入数据库 数据库信息修改&#xff1a;/config/database.ph…

.net core 的缓存方案

这里主要讲两个缓存的使用&#xff0c;MemoryCache和Redis 先讲讲常见的缓存 1、.net framework web中自带有Cache缓存&#xff0c;这种缓存属于粘性缓存&#xff0c;是缓存到项目中的&#xff0c;项目从服务器迁移的时候缓存的内容也能够随着服务器一起迁移 2、MemoryCache缓存…