ANR在应用程序重启期间
问题描述:
前提条件:ANR在应用程序重启期间
Android 4.0.3。
重现步骤:
打开应用程序,按返回键。
错误被转载一次。
这个错误是一个android bug或我的应用程序。错误?
"InputDispatcher" prio=10 tid=31 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x4165e6c0 self=0x23cfa8
| sysTid=1916 nice=-8 sched=0/0 cgrp=[no-cpu-subsys] handle=2017576
| schedstat=(22339660675 10841338980 166402) utm=1041 stm=1192 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x41f3e5d8> (a com.android.server.am.ActivityManagerService$4)
at java.lang.Object.wait(Object.java:401)
at com.android.server.am.ActivityManagerService.dumpStackTraces(ActivityManagerService.java:2980)
at com.android.server.am.ActivityManagerService.dumpStackTraces(ActivityManagerService.java:2958)
at com.android.server.am.ActivityManagerService.appNotResponding(ActivityManagerService.java:3195)
at com.android.server.am.ActivityRecord.keyDispatchingTimedOut(ActivityRecord.java:757)
at com.android.server.am.ActivityRecord$Token.keyDispatchingTimedOut(ActivityRecord.java:243)
at com.android.server.wm.InputMonitor.notifyANR(InputMonitor.java:108)
at com.android.server.wm.InputManager$Callbacks.notifyANR(InputManager.java:608)
at dalvik.system.NativeStart.run(Native Method)
答
不检查InputDispatcher线程,检查你的应用程序的主线程的堆栈。这就是ANR的实际原因。 - nandeesh 2分钟前
这是一个正确的解决方案
不要检查InputDispatcher线程,请检查您的应用程序的主线程的堆栈。这就是ANR的实际原因。 – nandeesh 2012-08-07 13:08:33
当您在主线程上执行耗时操作时,通常会导致ANR,我们可以通过在后台线程或Async上推送这些操作来避免它。这些操作通常都是基于网络的。 – 2012-08-07 12:57:09