2011-06-23 3 views
1

Je reçois ces traces de pile lors de l'exécution de mon application qui plante. Je comprends qu'il doit faire quelque chose avec "ANR keyDispatchingTimedOut". Je suis nouveau dans le développement Android et j'ai besoin d'aide pour lire les traces.Besoin d'aide pour lire les traces de pile

DALVIK THREADS: 
"main" prio=5 tid=1 NATIVE 
    | group="main" sCount=1 dsCount=0 s=N obj=0x40028ae0 self=0xcd58 
    | sysTid=7787 nice=0 sched=0/0 cgrp=default handle=-1345021904 
    | schedstat=(12266998315 6628478984 2116) 
    at android.database.sqlite.SQLiteQuery.native_fill_window(Native Method) 
    at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:70) 
    at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:299) 
    at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:280) 
    at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:171) 
    at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248) 
    at george.android.eortologioAlpha.EortologioAlpha.statheresPlhrhsGiortes(EortologioAlpha.java:171) 
    at george.android.eortologioAlpha.EortologioAlpha.giortazei(EortologioAlpha.java:265) 
    at george.android.eortologioAlpha.EortologioAlpha.eortazomenhEpafh(EortologioAlpha.java:281) 
    at george.android.eortologioAlpha.EortologioAlpha.onCreate(EortologioAlpha.java:474) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1065) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2797) 
    at android.app.ActivityThread.access$2300(ActivityThread.java:135) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:143) 
    at android.app.ActivityThread.main(ActivityThread.java:4914) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:521) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    at dalvik.system.NativeStart.main(Native Method) 

"Binder Thread #2" prio=5 tid=5 NATIVE 
    | group="main" sCount=1 dsCount=0 s=N obj=0x447cdb78 self=0x130b40 
    | sysTid=7791 nice=0 sched=0/0 cgrp=default handle=1248000 
    | schedstat=(6164551 6774901 9) 
    at dalvik.system.NativeStart.run(Native Method) 

"Binder Thread #1" prio=5 tid=4 NATIVE 
    | group="main" sCount=1 dsCount=0 s=N obj=0x447c9b18 self=0x139258 
    | sysTid=7790 nice=0 sched=0/0 cgrp=default handle=1271880 
    | schedstat=(12756347 35614013 13) 
    at dalvik.system.NativeStart.run(Native Method) 

"Signal Catcher" daemon prio=5 tid=3 RUNNABLE 
    | group="system" sCount=0 dsCount=0 s=N obj=0x447c81e8 self=0x136948 
    | sysTid=7789 nice=0 sched=0/0 cgrp=default handle=1249544 
    | schedstat=(4150389 20233155 9) 
    at dalvik.system.NativeStart.run(Native Method) 

"HeapWorker" daemon prio=5 tid=2 VMWAIT 
    | group="system" sCount=1 dsCount=0 s=N obj=0x43a1c590 self=0x136708 
    | sysTid=7788 nice=0 sched=0/0 cgrp=default handle=1248984 
    | schedstat=(247253419 294708251 77) 
    at dalvik.system.NativeStart.run(Native Method) 
+0

double possible de [Android - comment puis-je mener une enquête sur l'ANR] (http://stackoverflow.com/questions/704311/android-how-do-i-investigate-an-anr) –

Répondre

2

ANR keyDispatchingTimedOut signifie que votre activité a été coincé faire quelque chose et ne pouvait pas réagir à la prochaine entrée de l'utilisateur.

Pour lire une pile, il suffit de l'analyser jusqu'à ce que vous voyiez le nom de votre paquet, c'est le bit sur lequel vous voulez vous concentrer.

avoir répondu à cette fois avant: ANR keyDispatchingTimedOut error

ANR Erreur

Activité ne répond pas.

Votre activité a pris trop de temps à dire à l'OS Android 'hé je suis encore en vie'! (C'est ce que fait le thread UI).

http://developer.android.com/guide/practices/design/responsiveness.html

Fondamentalement, si vous faites le thread d'interface utilisateur faire un peu tâche complexe il est trop occupé à faire votre tâche de dire le système d'exploitation qu'il est encore « vivant ».

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

Vous devez déplacer votre base de données sélectionner/modifier/supprimer le code à un autre thread, puis utilisez un rappel pour dire au thread d'interface utilisateur que vous avez fini et de faire quelque chose avec le résultat.

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

Questions connexes