(转)如何分析解决Android ANR

一:什么是ANR

ANR:Application Not Responding,即应用无响应

二:ANR的类型

ANR一般有三种类型:

1:KeyDispatchTimeout(5 seconds) --主要类型

按键或触摸事件在特定时间内无响应

2BroadcastTimeout(10 seconds)

BroadcastReceiver在特定时间内无法处理完成

3:ServiceTimeout(20 seconds) --小概率类型

Service在特定的时间内无法处理完成

三:KeyDispatchTimeout

Akey or touch event was not dispatched within the specified time(按键或触摸事件在特定时间内无响应)

具体的超时时间的定义在framework下的

ActivityManagerService.java

//How long we wait until we timeout on key dispatching.

staticfinal int KEY_DISPATCHING_TIMEOUT = 5*1000

四:为什么会超时呢?

超时时间的计数一般是从按键分发给app开始。超时的原因一般有两种

(1)当前的事件没有机会得到处理(即UI线程正在处理前一个事件,没有及时的完成或者looper被某种原因阻塞住了)

(2)当前的事件正在处理,但没有及时完成

五:如何避免KeyDispatchTimeout

1UI线程尽量只做跟UI相关的工作

2:耗时的工作(比如数据库操作,I/O,连接网络或者别的有可能阻碍UI线程的操作)把它放入单独的线程处理

3:尽量用Handler来处理UIthread和别的thread之间的交互

六:UI线程

说了那么多的UI线程,那么哪些属于UI线程呢?

UI线程主要包括如下:

  1. Activity:onCreate(), onResume(), onDestroy(), onKeyDown(), onClick(),etc
  2. AsyncTask: onPreExecute(), onProgressUpdate(), onPostExecute(), onCancel,etc
  3. Mainthread handler: handleMessage(), post*(runnable r), etc
  4. other
时间: 2024-10-13 10:21:33

(转)如何分析解决Android 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

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

Android ANR的产生与分析

ANR即Application Not Responding应用无响应,一般在ANR的时候会弹出一个应用无响应对话框.也许有些开发者在使用某些手机开发中不在弹出应用无响应弹出框,特别是国产手机Android4.0以上的系统中,即使在开发者选项中设置了"显示所有应用无响应-为后台应用显示无响应ANR对话框",主要是因为在某些国产手机系统中就将该选项屏蔽了,应用超过了一定时间无响应也不会弹出ANR对话框了. 一般情况下应用无响应的时候回产生一个日志文件,位于/data/anr/文件夹下面,

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

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

Android ANR、Force Closed(转)

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

Android ANR

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

Android ANR 知多少

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

java.util.ConcurrentModificationException 解决 Android

java.util.ConcurrentModificationException 解决       Android  java 在项目里面 遇到了这个bug : E/AndroidRuntime(22055): java.util.ConcurrentModificationException E/AndroidRuntime(22055):      at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:569) 查看了下

彻底解决Android GPS没法定位这一顽固问题

大家去网上搜索Android定位location为null没法定位问题,估计有一大堆文章介绍如何来解决,但是最后大家发现基本没用.本文将从Android定位实现原理来深入分析没法定位原因并提出真正的解决方案.在分析之前,我们肯定得先看看android官方提供的定位SDK. 默认Android GPS定位实例 获取LocationManager: mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVI