android:程序无响应,你该如何定位问题?

如果MainThread长时间无响应,系统会提示“XXX无响应”,然后用户会关闭。那么,如何定位问题呢?无响应并不像Crash,它抓取不到异常日志,通常我们需要调试,才能定位问题。如何调试呢?

1.在Eclipse Devices窗口,选中app对应的包名,然后点击debug图标(绿色的小虫子),然后切换到Debug视图

2.切换视图之后,可以看到debug下,app的线程列表

3.对于main线程(第一个线程),选中,并将其挂起Suspend

4.然后我们就可以看到,Suspend之后,main线程卡住的位置:

可以看出,main线程在调用pauseBubbleAndHide时,surfaceView无法lockCanvas造成页面卡住。经后续排查发现,在掉用这个方法之前,lockCanvas和unlockCanvasAndPost没有成对出现照成的,上一次lock之后,没有unlock,照成再次lockCanvas时,无法响应。然后解决问题。

以上介绍了调试程序无响应的步骤。

-------------------------------------------------------------------

更多交流,Android开发联盟QQ群:272209595

时间: 01-27

android:程序无响应,你该如何定位问题?的相关文章

转 -android:程序无响应,你该如何定位问题?

如果MainThread长时间无响应,系统会提示“XXX无响应”,然后用户会关闭.那么,如何定位问题呢?无响应并不像Crash,它抓取不到异常日志,通常我们需要调试,才能定位问题.如何调试呢? 1.在Eclipse Devices窗口,选中app对应的包名,然后点击debug图标(绿色的小虫子),然后切换到Debug视图 2.切换视图之后,可以看到debug下,app的线程列表 3.对于main线程(第一个线程),选中,并将其挂起Suspend 4.然后我们就可以看到,Suspend之后,mai

ANR程序无响应原因及应对办法

Android ANR 分析解决方法 一:什么是ANR ANR:Application Not Responding,即应用无响应 二:ANR的类型 ANR一般有三种类型: 1. KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应 2. BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成 3. ServiceTimeout(20 seconds) --小概率类型 Servi

软件看门狗--别让你地程序无响应(使用未公开API函数IsHungAppWindow,知识点较全)

正文一.概述一些重要的程序,必须让它一直跑着:而且还要时时关心它的状态——不能让它出现死锁现象.当然,如果一个主程序会出现死锁,肯定是设计或者编程上的失误.我们首要做的事是,把这个Bug揪出来.但如果时间紧迫,这个Bug又“飘忽不定”,那么,我们还是先写一个软件“看门狗”,暂时应一下急吧. “看门狗”的需求描述:“看门狗”的运行不出现界面窗口,具有一定的隐蔽性:定时判断目标进程是否运行在当前系统中,如果没有则启动目标进程:判断目标进程是否“没有响应”,如果是则终止目标进程:如果目标进程“没有响应

打客服、重装系统都无解,苹果mac电脑各种程序无响应的最终解决办法

最近系统 变得异常难用 qq登陆就卡死.网易云音乐进不去.酷狗卡死.ios模拟器卡死...... 各种变态卡死 查遍网络.打客服.清缓存.重装系统依然无解????? 半个月了,真折磨 就要我放弃mac的时候,我查看了性能监视器,发现卡死的程序都是需要高性能GPU,就是显卡, 这下我怀疑时显卡没有切换,打开节能器,果然没有一直打开,系统又没有智能到自己打卡 把节能器锁定选项去掉,立马各种程序成功使用, qq亮了.网易云音乐响了.xcode的模拟器可以调试了 妈的..真心不喜欢苹果了,app提交六次

运行程序-无响应

问题:在MFC调试时,单步运行有时会跳出下面对话框. 过程:查阅了下资料,总结原因基本就是说 指针错误,访问越界.若说白些,就是你定义了指针,在未分配内存情况下对他操作,从而引出该问题.在调试出现该对话框时,问题就出在运行到的那行.而会发现那行你也的确是用到了指针. 方案:至于如何修改,可以考虑给你上面定义的指针分配内存,具体操作仿下: double *a; a=(double *)malloc(sizeof(double));[还可以用new来分配内存] 然后后面对指针a操作就不会出现上述问题

使用Loadrunner 录制脚本时程序无响应

解决方法: step1:IE 设置-Internet 选项-高级-启用第三方浏览器扩展-去掉该选项 step2:右键我的电脑-属性-高级系统设置-性能-设置-数据执行保护-选中第二项,然后添加iexplore.exe和vugen.exe 参考路径: C:\Program Files\Internet Explorer\iexplore.exe D:\Program Files\HP\LoadRunner\bin\vugen.exe step3:重启电脑,再进行录制 本人遇到这个问题的时候通过上面

xcode卡死问题,无论打开什么程序xcode总是在转菊花,显示应用程序无响应

很可能是因为我们上次没有正常关闭Xcode,而Xcode保留了上次错误的一些记录,而这次打开Xcode依然去加载错误的记录,所以必须完全删除这些记录Xcode才能加载正常的项目.那么也就是说,我们是不是只需要删除这部分错误记录文件就可以正常打开项目 删除错误文件的方法,关键是找到com.apple.dt.Xcode.savedState这个文件 方法1: rm -rf ~/Library/Saved Application State/com.apple.dt.Xcode.savedState/

线程的两种睡眠方法&ANR(进程/服务无响应)

1 method1: try { 2 Thread.sleep(3000); 3 } catch (InterruptedException e) { 4 e.printStackTrace(); 5 } 6 method2: SystemClock.sleep(3000); ANR(Application Not Responding) 在Android上,如果应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Re

安装vb6 正在更新系统 无响应

新装的win10系统,安装vb6时,最后一直卡在“正在更新系统”,程序无响应,没办法,kill掉后,貌似不影响软件使用,但是安装vs6sp6B无法成功安装. 解决办法是: 不安装“数据访问”组件. 参考:http://bbs.pcbeta.com/viewthread-1123857-1-1.html