ANR 是什么?怎样避免和解决ANR

在Android 上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,
这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择让
程序继续运行,但是,他们在使用你的应用程序时,并不希望每次都要处理这个对话框。因此,在程
序里对响应性能的设计很重要,这样,系统不会显示ANR 给用户。
Activity 5 秒broadcast10 秒
耗时的操作worker thread 里面完成, handler message…AsynTask , intentservice.等…
ANR:Application Not Responding,即应用无响应
ANR 一般有三种类型:
1:KeyDispatchTimeout(5 seconds) --主要类型
按键或触摸事件在特定时间内无响应
2:BroadcastTimeout(10 seconds)
BroadcastReceiver 在特定时间内无法处理完成
3:ServiceTimeout(20 seconds) --小概率类型
Service 在特定的时间内无法处理完成
超时的原因一般有两种:
(1)当前的事件没有机会得到处理(UI 线程正在处理前一个事件没有及时完成或者looper 被某种原
因阻塞住)
(2)当前的事件正在处理,但没有及时完成
UI 线程尽量只做跟UI 相关的工作,耗时的工作(数据库操作,I/O,连接网络或者其他可能阻碍UI
线程的操作)放入单独的线程处理,尽量用Handler 来处理UI thread 和thread 之间的交互。
UI 线程主要包括如下:
Activity:onCreate(), onResume(), onDestroy(), onKeyDown(), onClick()
AsyncTask: onPreExecute(), onProgressUpdate(), onPostExecute(), onCancel()
Mainthread handler: handleMessage(), post(runnable r)
查找ANR 的方式: 1. 导出/data/data/anr/traces.txt,找出函数和调用过程,分析代码2. 通过
性能LOG 人肉查找

时间: 2024-10-27 06:55:04

ANR 是什么?怎样避免和解决ANR的相关文章

理解ANR的前世今生,解决ANR就是这么简单!

1. 什么是ANR? ANR(Application Not Responding)即应用程序无响应. 2. ANR产生的原因是什么? ANR产生的根本原因是APP阻塞了UI线程.在android系统中每个App只有一个UI线程,是在App创建时默认生成的,UI线程默认初始化了一个消息循环来处理UI消息,ANR往往就是处理UI消息超时了.那么UI消息来源有哪些呢?主要有两种来源: 2.1 来自于AMS的回调消息 在Android系统中,应用程序是有Android的四大组件组成,AMS负责对应用程

【Android】定位与解决anr错误记录

问题描述 cocos2d-x游戏项目android工程接入sdk,支付成功后,java代码回调lua方法,产生了anr. 如何定位anr? 在data/anr/traces.txt文件中记录和anr错误信息.可以使用RE管理器查看该文件. 在日志信息中可以看到回调方法中调用的cocos2d-x的音频引擎播放音效的方法.就在这里产生了anr.我这里使用的是cocos2d-x2.1.5. 找到出问题的根源后,我把播放音效的代码注释了.然后再运行,就没有产生anr了. 但是,另一个问题又出现了...

ANR异常产生的原因及其解决办法

ANRs ("Application Not Responding"),意思是"应用没有响应". 在如下情况下,Android会报出ANR错误: – 主线程 ("事件处理线程" / "UI线程") 在5秒内没有响应输入事件 – BroadcastReceiver 没有在10秒内完成返回 通常情况下,下面这些做法会导致ANR 1.在主线程内进行网络操作 2.在主线程内进行一些缓慢的磁盘操作(例如执行没有优化过的SQL查询) 应用

Android ANR 知多少

极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android ANR(Application Not Responding )应用无响应的简称,是为了在 APP卡死时,用户 可以强制退出APP的选择,从而避免卡机无响应问题,这是Android系统的一种自我保护机制. 通过本篇阅读,您将学习到以下内容 什么是ANR ANR的类型 ANR 产生的原因 如何分析解决 ANR问题 ANR 问题分析解决建议 MTK 平台 ANR问题分析 1. 什么是

android ANR产生原因和解决办法

ANR (Application Not Responding) ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框.用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”.所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框.因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户. 默认情况下,在andro

android ANR产生原因和解决办法【转】

ANR (Application Not Responding) ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框.用户可以选择"等待"而让程序继续运行,也可以选择"强制关闭".所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框.因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用

如何分析解决Android ANR

来自: http://blog.csdn.net/tjy1985/article/details/6777346 http://blog.csdn.net/tjy1985/article/details/6777355 http://blog.csdn.net/tjy1985/article/details/6777983 http://www.eoeandroid.com/forum.php?mod=viewthread&tid=165974 =========================

Android ANR 分析解决方法

转:http://www.cnblogs.com/purediy/p/3225060.html 一:什么是ANR ANR:Application Not Responding,即应用无响应 二:ANR的类型 ANR一般有三种类型: 1. KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应 2. BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成 3. ServiceTime

Android ANR解决案例(内部资料)

当发生ANR后,首先需要查看log信息以及trace文件(系统都会在/data/anr/目录下生成trace文件)分析出ANR原因.通过以下分析并不能解决所有碰到的ANR,但程序自身原因导致的ANR问题基本都能找到原因. log信息分析 04-01 13:12:11.572 I/InputDispatcher( 220): Application is not responding:Window{2b263310com.android.email/com.android.email.activi