Android ANR小知识

简介:

转载请注明出处:王亟亟的大牛之路

崩溃和未响应是我们开发过程中经常会碰到,而且是很不希望碰到的问题,像这样:
这里写图片描述(崩溃)

或者是这样?

这里写图片描述

通常,我们主线程被阻塞的时候会出现未响应的情况,而某些异常出现却为被处理会出现系统的崩溃。

这里我们来说下ANR:

全名:Application Not Responding

一般何时会出现?

—主线程 (“事件处理线程” / “UI线程”) 在5秒内没有响应输入事件

—BroadcastReceiver 没有在10秒内完成返回

—主线程被IO操作(从4.0之后网络IO不允许在主线程中)阻塞。
—主线程中存在耗时的计算
—主线程中错误的操作,比如Thread.wait或者Thread.sleep等

系统通常会如何告知用户?

系统就会弹出一个ANR对话框,用户可以自行选择继续等待亦或者是停止当前程序。

如何避免?
—使用AsyncTask处理耗时IO操作。
使用Thread或者HandlerThread时,调用Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)设置优先级,否则仍然会降低程序响应,因为默认Thread的优先级和主线程相同。
—使用Handler处理工作线程结果,而不是使用Thread.wait()或者Thread.sleep()来阻塞主线程。
—Activity的onCreate和onResume回调中尽量避免耗时的代码
—BroadcastReceiver中onReceive代码也要尽量减少耗时,建议使用IntentService处理。

通常100到200毫秒就会让人察觉程序反应慢,为了更加提升响应,可以使用下面的几种方法

—如果程序正在后台处理用户的输入,建议使用让用户得知进度,比如使用ProgressBar控件。
—程序启动时可以选择加上欢迎界面,避免让用户察觉卡顿。
—使用Systrace和TraceView找出影响响应的问题。

目录
相关文章
|
数据库 Android开发
android 如何调查并解决 ANR
android 如何调查并解决 ANR
126 0
|
监控 调度 Android开发
看完这篇 Android ANR 分析,就可以和面试官装逼了!
ANR概述 首先,ANR(Application Not responding)是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。
8316 0
|
存储 监控 Android开发
Android卡顿优化 | ANR分析与实战(附ANR-WatchDog源码分析及实战、与AndroidPerformanceMonitor的区别)
Android卡顿优化 | ANR分析与实战(附ANR-WatchDog源码分析及实战、与AndroidPerformanceMonitor的区别)
|
7月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
11月前
|
缓存 Java 数据库
Android的ANR原理
【10月更文挑战第18天】了解 ANR 的原理对于开发高质量的 Android 应用至关重要。通过合理的设计和优化,可以有效避免 ANR 的发生,提升应用的性能和用户体验。
475 56
|
算法 Java API
Android性能优化面试题经典之ANR的分析和优化
Android ANR发生于应用无法在限定时间内响应用户输入或完成操作。主要条件包括:输入超时(5秒)、广播超时(前台10秒/后台60秒)、服务超时及ContentProvider超时。常见原因有网络、数据库、文件操作、计算任务、UI渲染、锁等待、ContentProvider和BroadcastReceiver的不当使用。分析ANR可借助logcat和traces.txt。主线程执行生命周期回调、Service、BroadcastReceiver等,避免主线程耗时操作
301 3
|
缓存 Java 数据库
Android 性能优化: 请解释ANR(Application Not Responding)是什么,如何避免它?
Android 性能优化: 请解释ANR(Application Not Responding)是什么,如何避免它?
296 0
|
消息中间件 监控 开发工具
Android 如何监控和解决ANR问题
Android 如何监控和解决ANR问题
|
Java Shell Android开发
Android 11 ANR
Android 11 ANR
544 0
Android 11 ANR
|
Java Linux 调度
Android 产生ANR后的Trace文件的解析
Android 产生ANR后的Trace文件的解析
587 0
Android 产生ANR后的Trace文件的解析

热门文章

最新文章