Android ANR

  • 前言
  • 一、ANR产生的原因
  • 二、如何尽量避免ANR?

前言

ANR:Application Not Responding,应用程序无响应

一、ANR产生的原因

Android系统中的AMS(ActivityManagerService) 和 WMS(WindowManagerService)会检测App的响应时间,如果App的主线程(UI线程)没有在规定的时间内处理完相应的工作,就会出现ANR警告。

以下四个条件可以产生ANR:
InputDispatching Timeout: 5s内无法响应屏幕触摸事件或键盘输入事件。
BroadcastQueue Timeout: BroadcastReceiver的事件(onRecieve方法)在规定时间内没处理完成(前台规定时间:10s,后台规定时间:60s)。
Service Timeout: 规定时间未完成启动 Timeout executing service(前台:20s 后台:200s)。
ContentProvider Timeout: ContentProvider的publish在10s内没进行完

二、如何尽量避免ANR?

  • 尽量避免在主线程(UI线程)中做耗时工作,耗时工作尽量放在子线程中

  • 尽量用Handler来处理UI Thread和别的Thread交互

  • 实在绕不开主线程,可以尝试通过Handler延迟加载;

  • 广播中如果有耗时操作,建议放在IntentService中去执行,或者通过goAsync() + HandlerThread分发执行。

Android ANR是什么?相关推荐

  1. 转 android anr 分析示例,[摘]Android ANR日志分析指南之实例解析

    前文<[摘]Android ANR日志分析指南>也摘抄了如何分析,接下来通过实例解析. 一.主线程被其他线程lock,导致死锁 waiting on <0x1cd570> (a ...

  2. Android ANR

    ANRs ("Application Not Responding"),意思是"应用没有响应". 1)什么引发了ANR? 在Android里,应用程序的响应性是 ...

  3. Android 系统(135)---Android anr 分析步骤总结

    Android anr 分析步骤总结 前言:最近经手了比较多的anr问题,声明经手不是解决,只是从log上推断造成anr的原因,以此作为根据转交给对应的人来处理. 1. ANR简介 ANR全名Appl ...

  4. android anr 产生的类型及原因

    android anr 产生的条件 android 系统中anr的本质是主线程无法响应.而导致主线程无法响应的原因大致如下: 主线程请求网络资源,数据库访问或者io访问,这些操作都是耗时操作,主线程处 ...

  5. Android anr介绍

    1)什么引发了ANR? 在Android里,应用程序的响应性是由Activity Manager和WindowManager系统服务监视的.当它监测到以下情况中的一个时,Android就会针对特定的应 ...

  6. Android ANR是什么

    很多初入Android 开发的网友可能发现ANR的字样,到底Android ANR是什么呢? 其实ANR就是Application Not Responding的全称,当某个应用处于长期假死状态时An ...

  7. Android ANR 搜集

    Android ANR排查 应用层一般如下情况下需要查看log 1) 程序异常退出 , uncaused exception 2) 程序强制关闭 ,Force Closed (简称FC) 3) 程序无 ...

  8. Android ANR问题总结(非原创)

    <title>Android ANR问题总结(非原创) - Vane的博客 | Vane's Blog</title><!-- Web App Manifest --&g ...

  9. 看完这篇 Android ANR 分析,就可以和面试官装逼了!

    点击上方"何俊林",马上关注,每天早上8:50准时推送 真爱,请置顶或星标 本文转载自公号玉刚说,原创作者htkeepmoving,原文链接:https://www.jianshu ...

最新文章

  1. Delphi Qjson
  2. 计算密集型服务 性能优化实战始末
  3. Where does the setting xx-bindingSuntax - complex take effect
  4. 通过一段汇编,加深对寄存器ESP和EBP的理解
  5. 解决虚拟机VMware安装CentOS7.0识别不到网卡
  6. php 读取 stl 文件,科学网—[转载]【源码】读取ASCII STL文件的STLReader - 刘春静的博文...
  7. leetcode - 898. 子数组按位或操作(使用了集合)
  8. centos 7 安装kvm 虚拟机
  9. matlab使用histogram画直方图划分柱宽度不一致问题
  10. 存数组元素的个数_HashMap1.8之后为什么要采用数组+链表+红黑树的储存方式?
  11. java中对数组进行排序_如何在Java中对数组排序
  12. 大数据开发笔记(九):Flink基础
  13. 系统集成项目管理工程师 案例题【2021上】 总结
  14. windows下解决mysql secure_file_priv null的问题
  15. 网站的海量数据和高并发的解决方案(二)
  16. 关于构造和二进制,题目:牛牛的DRB迷宫Ⅱ(源自牛客竞赛2020年寒假集训)
  17. [文献阅读]——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  18. 视频号新人直播应该准备什么?
  19. 解决blacklist nouveau问题
  20. 计算机能进入系统但是桌面不动,电脑开机进入桌面后卡住不动

热门文章

  1. 烧烤架,烧烤套装,烧烤刷CSA Z630:19标准
  2. 全国领先——液力悬浮仿生型人工心脏上市后在同济医院成功植入
  3. android裁剪控件,Android 仿抖音音频裁剪控件
  4. java retro2me_模拟乐园java版下载-模拟乐园java手机版下载-战地2中文网
  5. GB2312 中文简体字库表
  6. 安装算量软件点画立管_给排水、喷淋、消火栓等专业
  7. OpenCV puttext不调库显示中文
  8. SourceTree 提交报错 闪退
  9. A Frustratingly Easy Approach for Entity and Relation Extraction 论文阅读
  10. 日常用语--生病看医生