2012-08-07 263 views
0

前提条件: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) 
+1

不要检查InputDispatcher线程,请检查您的应用程序的主线程的堆栈。这就是ANR的实际原因。 – nandeesh 2012-08-07 13:08:33

+0

当您在主线程上执行耗时操作时,通常会导致ANR,我们可以通过在后台线程或Async上推送这些操作来避免它。这些操作通常都是基于网络的。 – 2012-08-07 12:57:09

回答

1

不检查InputDispatcher线程,检查你的应用程序的主线程的堆栈。这就是ANR的实际原因。 - nandeesh 2分钟前

这是一个正确的解决方案

相关问题