web-dev-qa-db-fra.com

Erreur ANR keyDispatchingTimedOut

j'obtiens cette erreur de force down dans mon application, quand j'essaie d'analyser RSS avec DOM. ce n'est pas toujours le problème de force down cependant ... c'est le logcat:

**ANR keyDispatchingTimedOut**

DALVIK THREADS:
"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x40025b50 self=0xcdb8
  | sysTid=2504 Nice=0 sched=0/0 cgrp=bg_non_interactive handle=-1345017804
  | schedstat=( 573577878 521301271 1476 )
  at org.Apache.harmony.luni.platform.OSNetworkSystem.readSocketImpl(Native Method)
  at org.Apache.harmony.luni.platform.OSNetworkSystem.read(OSNetworkSystem.Java:358)
  at org.Apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.Java:561)
  at org.Apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.Java:88)
  at org.Apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl$ChunkedInputStream.read(HttpURLConnectionImpl.Java:458)
  at Java.io.InputStreamReader.read(InputStreamReader.Java:275)
  at org.kxml2.io.KXmlParser.peek(KXmlParser.Java:931)
  at org.kxml2.io.KXmlParser.pushText(KXmlParser.Java:881)
  at org.kxml2.io.KXmlParser.nextImpl(KXmlParser.Java:354)
  at org.kxml2.io.KXmlParser.nextToken(KXmlParser.Java:1406)
  at org.Apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.Java:369)
  at org.Apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.Java:362)
  at org.Apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.Java:362)
  at org.Apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.Java:362)
  at org.Apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.Java:362)
  at org.Apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.Java:135)
  at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.Java:110)
  at kostas.menu.olympiakos.DomFeedParser.parse(DomFeedParser.Java:26)
  at kostas.menu.olympiakos.nea.loadFeed(nea.Java:51)
  at kostas.menu.olympiakos.nea.onCreate(nea.Java:38)
  at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1066)
  at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2799)
  at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2866)
  at Android.app.ActivityThread.access$2300(ActivityThread.Java:140)
  at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:2181)
  at Android.os.Handler.dispatchMessage(Handler.Java:99)
  at Android.os.Looper.loop(Looper.Java:143)
  at Android.app.ActivityThread.main(ActivityThread.Java:5097)
  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:868)
  at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:626)
  at dalvik.system.NativeStart.main(Native Method)

"Binder Thread #2" prio=5 tid=6 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x46eea810 self=0x135a00
  | sysTid=2509 Nice=0 sched=0/0 cgrp=bg_non_interactive handle=1213600
  | schedstat=( 10253904 21514895 127 )
  at dalvik.system.NativeStart.run(Native Method)

"Binder Thread #1" prio=5 tid=5 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x46eea748 self=0x12cab0
  | sysTid=2508 Nice=0 sched=0/0 cgrp=bg_non_interactive handle=1301736
  | schedstat=( 12603756 119659428 129 )
  at dalvik.system.NativeStart.run(Native Method)

"Compiler" daemon prio=5 tid=4 VMWAIT
  | group="system" sCount=1 dsCount=0 s=N obj=0x46ee32a8 self=0x127bc8
  | sysTid=2507 Nice=0 sched=0/0 cgrp=bg_non_interactive handle=1300256
  | schedstat=( 197021496 268585180 1155 )
  at dalvik.system.NativeStart.run(Native Method)

"Signal Catcher" daemon prio=5 tid=3 RUNNABLE
  | group="system" sCount=0 dsCount=0 s=N obj=0x46ee31e8 self=0xa8140
  | sysTid=2506 Nice=0 sched=0/0 cgrp=bg_non_interactive handle=1299816
  | schedstat=( 915528 5706786 7 )
  at dalvik.system.NativeStart.run(Native Method)

"HeapWorker" daemon prio=5 tid=2 VMWAIT
  | group="system" sCount=1 dsCount=0 s=N obj=0x45947800 self=0x1224b8
  | sysTid=2505 Nice=0 sched=0/0 cgrp=bg_non_interactive handle=1212984
  | schedstat=( 27404784 3082276 24 )
  at dalvik.system.NativeStart.run(Native Method)
25
menu_on_top

Erreur ANR

Activité ne répondant pas.

Votre activité a pris trop de temps à dire au système d'exploitation Android "hey je suis toujours vivant"! (C'est ce que fait le fil d'interface utilisateur).

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

Fondamentalement, si vous demandez au thread d'interface utilisateur d'effectuer une tâche complexe, il est trop occupé à faire votre tâche pour dire au système d'exploitation qu'il est toujours "vivant".

http://Android-developers.blogspot.co.uk/2009/05/pireless-threading.html

Vous devez déplacer votre code d'analyse XML vers un autre thread, puis utiliser un rappel pour indiquer au thread d'interface utilisateur que vous avez terminé et faire quelque chose avec le résultat.

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

47
Blundell

Si Logcat ne produit rien d'utile, essayez d'extraire traces.txt de /data/anr/traces.txt

adb pull /data/anr/traces.txt.

car il peut donner plus d'informations sur le lieu de l'exception ANR

14
Maragues

N'exécutez pas d'opérations de blocage sur le thread d'interface utilisateur. Lancez votre propre thread ou utilisez la classe AsyncTask pour un moyen plus pratique de résoudre ce problème.

2