Android-ANR问题

Android-ANR问题

想挽留 发布于 2017-03-09 字数 96 浏览 1104 回复 3

当随机出现ANR报错,并且提示:Reason: keyDispatchingTimedOut时,怎么进行代码的定位与解决。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜无邪 2017-05-10 3 楼

原因只有一个,主线程被阻塞,
可以通过
adb shell cat /data/anr/traces.txt 去查看下导致ANR的原因

解决方式也很简单:
任何不可控的时间和运算,都不要在主线程中操作(AsyncTask)。

归属感 2017-05-02 2 楼

ANR大部分情况都是UI 线程被阻塞了,就是说某个主线程函数执行时间太长了。如果可能查找位于/data/anr/traces.txt这个文件的内容,找到和自己app相关的部分去定位。

仔细研究这部分android文档
http://developer.android.com/guide/practices/design/responsiveness.html

http://developer.android.com/resources/articles/painless-threading.html

http://developer.android.com/resources/articles/timed-ui-updates.html

归根到底,还是主线程处理工作任务繁重了,减轻负担。

想挽留 2017-03-21 1 楼

还是应该对日志文件进行细致的分析,keyDispatchingTimeOut:点击按钮某时候可能处理不过来按钮事件,导致超时无响应。既然处理不过来,那么就是有个操作堵塞了。
这里有一篇分析Log文件的文章,其中就有对keyDispatchingTimeOut的跟踪分析:
Android中对Log日志文件的分析