安卓ANR检测、分析、优化面面谈

前言

一个引发讨论的楔子,以下三种现象有什么区别:

  • App停止运行
  • App暂无响应
  • App闪退
    答案:
    产生原因不同:
  • 停止运行是UNCheckException+Error
  • 暂无响应是ANRDialog
  • 闪退是CheckException+Error
    本文讨论的主题是ANR的定义、分类、复现、分析、优化。

ANR定义

Application Not Responding

ANR类型

Input dispatching timed out

按键或触摸事件在特定时间内无响应(origin:5s)
KEY_DISPATCHING_TIMEOUT = 8*1000

12-08 10:51:08.136 763-787/system_process E/ANRManager: ANR in com.xx
  
(com.xx/com.xxactivity.ScreenSaverPicSelectActivity), 

time=26867631
    
Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago.  Wait queue length: 36.  Wait queue head age: 8510.1ms.)

Broadcast Timeout

BroadcastReceiver在特定时间内无法处理完成
BROADCAST_FG_TIMEOUT: 10s
BROADCAST_BG_TIMEOUT: 60s
按键和广播事件时间内未响应,时间限定定义在ActivityManagerService.java类中

Service Timeout

Service在特定的时间内无法处理完成,属于小概率类型
service时间内未响应时间限定在ActiveServices.java类中
SERVICE_TIMEOUT = 20*1000;

Activity Timeout

名称 时间
Activity#onPause 500ms
Activity#onStop 10s

Activity#onDestory	10s
	12-08 17:22:11.296 719-743/system_process W/ActivityManager: 
Activity stop timeout for ActivityRecord{2fd135ba u0 com.xx./com.unilife.fridge.home.banner.OpenFullScreenActivity t206}

ANR原因

  1. 应用进程有一个主线程(main thread)和一个信息队列(main message queue) main thead == activity thread
  2. 主线程负责处理像Draw、Listen、receive等UI事件
  3. 主线程负责从消息队列中取出信息并分发它
  4. 主线程在完成当前信息处理之前,不会再取信息队列中的信息
  5. 如果主线程在处理当前信息时卡住,没有及时分发,ANR就会出现

ANR检测

ANR检测工具

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CISCN 2023 初赛 被加密的生产流量

题目附件给了 modbus.pcap 存在多个协议 但是这道题多半是 考 modbus 会发现 每次的 Query 末尾的两个字符 存在规律 猜测是base家族 可以尝试提取流量中的数据 其中Word Count字段中的22871 是10进制转16进制在转ascii字符串 先提取 过滤器判断字段 tshark -r modbus.pcap …

大学校园广播“录编播”与IP校园公共广播系统技术方案

一、项目概述 1、校园IP网络广播系统概述 大学校园广播系统是学校整个弱电系统中的子系统,它是每个学校不可缺少的基础设施之一,在传递校园文化、传播校园新闻资讯方面发挥着重要的作用。近几年来,虽然视频技术和网络技术在飞速发展&#xf…

沟通程序化(1):跟着鬼谷子学沟通—“飞箝”之术

沟通的基础需要倾听,但如果对方听不进你的话,即便你说的再有道理,对方也很难入心。让我们看看鬼谷子的“飞箝”之术能给我们带来什么样的启发吧! “飞箝”之术,源自中国古代兵法家、纵横家鼻祖鬼谷子的智慧&#xff0…

基于分步傅立叶数值算法的一维非线性薛定谔方程求解matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于分步傅立叶数值算法的一维非线性薛定谔方程求解matlab仿真. 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 3.核心程序 ........................…

appium元素定位工具_uiautomatorviewer.bat

特点: uiautomatorviewer是android-sdk自带的元素定位工具uiautomatorviewer只能用于安卓系统;它是通过截屏分析XML布局文件方式,来提供控件信息的查看服务 uiautomatorviewer.bat 基本使用 路径:这个工具是Android SDK中自带&…

【C++】C++11新特性:新的类功能、可变参数模板、STL容器中的empalce相关接口函数、lambda表达式、包装器(function、bind)

目录 一、新的类功能 1.1 移动构造函数和移动赋值运算符重载 1.2 强制生成默认函数的关键字default 1.3 禁止生成默认函数的关键字delete 1.4 其它的类功能 二、可变参数模板 三、STL容器中的empalce相关接口函数 四、lambda表达式 4.1 lambda的引入 4.2 lambda表达式…

Ollama教程,本地部署大模型Ollama,docker安装方法,仅供学习使用

不可商用!!仅仅提供学习使用! 先上视频教学: Ollama教程,本地部署大模型Ollama,docker安装方法,仅供学习使用! 资料获取 : Ollama下载包和安装文档在这里&#xff1…

从零到一的程序猿-day2-yoloV4训练及免环境易语言调用

简介 本项目功能介绍:针对4位英文数字随机组合的验证码抽象图片进行分类识别,识别结果为验证码内容 训练 没有难度,手动标注,样本为150张,首先识别出图片中每个英数的位置,再由分类器进行标注识别&#x…

latex bib引参考文献

1.bib内容 2.sn-mathphys-num是官方的参考文献格式 3.不用导cite包,文中这么写 4.end document前ckwx是自己命名的bib的名字

C语言Linux进度条模拟

在Linux字符界面中,使用yum、apt下载东西时会有一个图形化的进度条,可以告诉我们任务的执行进度。 我们也可以通过C语言实现一个类似的进度条,并且可以做得更加美观。以后我们自己写的程序需要显示进度时就可以去调用我们自己实现的进度条。 …

【算法】贪心算法——柠檬水找零

题解:柠檬水找零(贪心算法) 目录 1.题目2.题解3.参考代码4.证明5.总结 1.题目 题目链接:LINK 2.题解 分情况讨论 贪心算法 当顾客为5元时,收下当顾客为10元时,收下10元并找回5元当顾客为20元时,收下20元并找回10…

图像交换部分区域或帧

生成一个boundingbox,或区间 给定矩形框占图像的面积比例,和图像的宽W高H,生成矩形框。根据给定的矩形框,交换两张图像的部分区域。 这里为了方便展示,简化问题,给定一个图像数组mels,对第 i …

基于SSM框架的垃圾分类系统的设计与实现(含源码+sql+开题报告+论文+论文答辩模板)

图1 前台首页截图 首页展示:首页展示法律法规、公示公告、用户交流论坛、分类指南、垃圾站点、以及个人中心; 法律法规:展示我国《城市生活垃圾分类及其评价标准》以及《生活垃圾分类标志》等最新法律法规; 公示公告&#xff1…

【第1章】SpringBoot实战篇之注册接口

文章目录 前言一、代码部分1. User2.UserMapper13. UserSerivce4. UserController15. Result 二、测试1.注册2.再次注册 总结 前言 下面介绍用户注册接口。 一、代码部分 1. User package org.example.springboot3.bigevent.entity;import com.baomidou.mybatisplus.annotat…

【Vulhub】Fastjson 1.2.24_rce复现

文章目录 一,Fastjson是什么?二,fastjson漏洞原理三,判断是否有fastjson反序列化四,复现Fastjson 1.2.24_rce(vulhub)环境配置1.判断是否存在Fastjson反序列化2.反弹shell3.启动RMI服务器4.构造恶意POST请求 一&#x…

FineBi导出Excel后台版实现

就是不通过浏览器,在后台运行的导出 参考文档在:仪表板查看接口- FineBI帮助文档 FineBI帮助文档 我这里是将这个帮助文档中导出的excel文件写到服务器某个地方后,对excel进行其他操作后再下载。由于原有接口耦合了HttpServletRequest req, HttpServletResponse res对象,…

【代码随想录】【算法训练营】【第24天】 [77]组合

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 23,愉快的周五~ 题目详情 [77] 组合 题目描述 77 组合 解题思路 前提:组合求子集问题 思路:回溯算法三部曲:递归函数的返回值以及参数、回溯…

MySQL 自定义函数(实验报告)

一、实验名称: 自定义函数 二、实验日期: 2024年 6 月 1 日 三、实验目的: 掌握MySQL自定义函数的创建及调用; 四、实验用的仪器和材料: 硬件:PC电脑一台; 配置:内存&#…

数据结构——图论详细笔记

一 图论基本概念 Directed Acyclic Graph (DAG) 二 图的存储 ①邻接矩阵(适用于稠密图) ②邻接表(适用于稀疏图) 三、图的遍历 ①深度优先搜索 //(基于邻接表实现,以有向图为例) //DFS:Depth First Search 深度优先搜索 //1、访问起始顶点 …

STM32学习和实践笔记(33):待机唤醒实验

1.STM32待机模式介绍 很多单片机具有低功耗模式,比如MSP430、STM8L等,我们的STM32也不例外。默认情况下,系统复位或上电复位后,微控制器进入运行模式。在运行模式下,HCLK 为CPU提供时钟,并执行程序代码。这…