2012-08-07 109 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分鐘前

這是一個正確的解決方案

相關問題