Нужна помощь в чтении следов стека - PullRequest
1 голос
/ 23 июня 2011

Я получаю эти следы стека при запуске моего приложения, которое вылетает. Я получаю, что это должно сделать что-то с «ANR keyDispatchingTimedOut». Я новичок в разработке для Android, и мне нужна помощь в чтении следов.

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)

1 Ответ

2 голосов
/ 23 июня 2011

ANR keyDispatchingTimedOut означает, что ваша активность застряла при выполнении чего-либо и не может реагировать на следующий пользовательский ввод.

Чтобы прочитать трассировку стека, просто отсканируйте ее, пока не увидите имя пакета, то есть бит, который вы хотитесосредоточиться на.

Я уже отвечал на это один раз: ANR keyDispatchingTimedOut error

ANR Error

Активность не отвечает.

Ваша деятельность заняла много времени, чтобы сказать ОС Android: «Эй, я все еще жив»!(Это то, что делает поток пользовательского интерфейса).

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

В основном, если вы заставляете поток пользовательского интерфейса выполнять какую-то сложную задачу, он слишком занят выполнением вашей задачи, чтобы сказать ОС, что он все еще работает.'alive'.

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

Вы должны переместить код выбора / обновления / удаления вашей базы данных в другой поток, а затем использовать обратный вызов, чтобы сообщить потоку пользовательского интерфейса, который вы закончили, и сделать что-тос результатом.

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

...