Skip to main content
Participating Frequently
July 18, 2013
Answered

Air on Android : ANR keyDispatchingTimedOut

  • July 18, 2013
  • 2 replies
  • 4996 views

Hi there,

First of all, i would like to say GREAT JOB ADOBE, AIR is the only TRUE Crossplatform platform available today that let you target multiple devices (now i know there are many problems too, but i couldnt find any other suitable technolgoy that allow me to both develop games and apps with it)

Secondly, my recent app is working AWESOME on iOS and Blackberry playbook, however when it comes to Android, (i'm using AIR 3.7) my app get stuck after sometime, and i get same ANR erroor with 99% same log.

Kindly, help and let me know what is going on there as i'm unable to make sense of the log, My app is a painting app with mousedown and  play audio effects, (mouse down/over) etc .

Here is the log

ANR keyDispatchingTimedOut

DALVIK THREADS:

(mutexes: tll=0 tsl=0 tscl=0 ghl=0)

"main" prio=5 tid=1 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x40f3f4c0 self=0xc957b0

| sysTid=9982 nice=0 sched=0/0 cgrp=default handle=1074337148

| schedstat=( 68501953685 17042441637 91859 ) utm=5910 stm=940 core=1

at com.adobe.air.customHandler.callTimeoutFunction(Native Method)

at com.adobe.air.customHandler.handleMessage(customHandler.java:22)

at android.os.Handler.dispatchMessage(Handler.java:99)

at android.os.Looper.loop(Looper.java:154)

at android.app.ActivityThread.main(ActivityThread.java:4624)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:511)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)

at dalvik.system.NativeStart.main(Native Method)


"AudioTrackThread" prio=10 tid=18 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41945a68 self=0x13eb108

| sysTid=14004 nice=-16 sched=0/0 cgrp=default handle=35402400

| schedstat=( 464872302 214067321 5444 ) utm=14 stm=32 core=1

at dalvik.system.NativeStart.run(Native Method)


"Thread-14611" prio=5 tid=17 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41945d28 self=0x147fd18

| sysTid=14003 nice=-16 sched=0/0 cgrp=default handle=30658624

| schedstat=( 219919464 48144153 981 ) utm=16 stm=5 core=0

at dalvik.system.NativeStart.run(Native Method)


"Thread-14586" prio=5 tid=16 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41a5dd70 self=0xf693d0

| sysTid=10010 nice=0 sched=0/0 cgrp=default handle=16485592

| schedstat=( 2144241714 2580103782 25916 ) utm=113 stm=101 core=1

at dalvik.system.NativeStart.run(Native Method)


"Thread-14585" prio=5 tid=15 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41919020 self=0xf89968

| sysTid=10009 nice=0 sched=0/0 cgrp=default handle=16710104

| schedstat=( 31459240 130834457 626 ) utm=0 stm=3 core=0

at dalvik.system.NativeStart.run(Native Method)


"Thread-14583" prio=5 tid=14 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x418a8cb0 self=0xfe6470

| sysTid=10004 nice=0 sched=0/0 cgrp=default handle=16279096

| schedstat=( 376383 61765153 9 ) utm=0 stm=0 core=0

at dalvik.system.NativeStart.run(Native Method)


"Thread-14582" prio=5 tid=13 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x418e8f78 self=0xfdf7b0

| sysTid=10003 nice=0 sched=0/0 cgrp=default handle=16074528

| schedstat=( 218174309 100420612 262 ) utm=17 stm=4 core=0

at dalvik.system.NativeStart.run(Native Method)


"Binder Thread #3" prio=5 tid=12 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x418ab860 self=0xfe2898

| sysTid=10002 nice=0 sched=0/0 cgrp=default handle=16054272

| schedstat=( 25091458 205252848 213 ) utm=2 stm=0 core=1

at dalvik.system.NativeStart.run(Native Method)


"java.lang.ProcessManager" daemon prio=5 tid=11 WAIT

| group="main" sCount=1 dsCount=0 obj=0x418ac9e0 self=0xe21018

| sysTid=10000 nice=0 sched=0/0 cgrp=default handle=16012192

| schedstat=( 2048767 61409460 17 ) utm=0 stm=0 core=0

at java.lang.Object.wait(Native Method)

- waiting on <0x4187c210> (a java.util.HashMap)

at java.lang.Object.wait(Object.java:364)

at java.lang.ProcessManager.waitForMoreChildren(ProcessManager.java:140)

at java.lang.ProcessManager.watchChildren(ProcessManager.java:105)

at java.lang.ProcessManager.access$000(ProcessManager.java:40)

at java.lang.ProcessManager$1.run(ProcessManager.java:58)


"android.hardware.SensorManager$SensorThread" prio=5 tid=10 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x418eb218 self=0xfdc2d8

| sysTid=9999 nice=-8 sched=0/0 cgrp=default handle=15204776

| schedstat=( 399149510 189489559 2833 ) utm=39 stm=0 core=1

at android.hardware.SensorManager.sensors_data_poll(Native Method)

at android.hardware.SensorManager$SensorThread$SensorThreadRunnable.run(SensorManager.java:498)

at java.lang.Thread.run(Thread.java:856)


"Binder Thread #2" prio=5 tid=9 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x4184e340 self=0xf0a960

| sysTid=9994 nice=0 sched=0/0 cgrp=default handle=16530472

| schedstat=( 36518472 212101527 207 ) utm=1 stm=2 core=0

at dalvik.system.NativeStart.run(Native Method)


"Binder Thread #1" prio=5 tid=8 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x4184be78 self=0xff09a0

| sysTid=9993 nice=0 sched=0/0 cgrp=default handle=16536408

| schedstat=( 30399157 206606684 214 ) utm=1 stm=2 core=1

at dalvik.system.NativeStart.run(Native Method)


"FinalizerWatchdogDaemon" daemon prio=5 tid=7 TIMED_WAIT

| group="main" sCount=1 dsCount=0 obj=0x41848b98 self=0xfe48c8

| sysTid=9992 nice=0 sched=0/0 cgrp=default handle=16032952

| schedstat=( 5256924 77209690 72 ) utm=0 stm=0 core=0

at java.lang.VMThread.sleep(Native Method)

at java.lang.Thread.sleep(Thread.java:1031)

at java.lang.Thread.sleep(Thread.java:1013)

at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:213)

at java.lang.Thread.run(Thread.java:856)


"FinalizerDaemon" daemon prio=5 tid=6 WAIT

| group="main" sCount=1 dsCount=0 obj=0x41848a40 self=0xfeed00

| sysTid=9991 nice=0 sched=0/0 cgrp=default handle=15931824

| schedstat=( 35608386 91104086 392 ) utm=2 stm=1 core=0

at java.lang.Object.wait(Native Method)

- waiting on <0x40f355d0> (a java.lang.ref.ReferenceQueue)

at java.lang.Object.wait(Object.java:401)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)

at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)

at java.lang.Thread.run(Thread.java:856)


"ReferenceQueueDaemon" daemon prio=5 tid=5 WAIT

| group="main" sCount=1 dsCount=0 obj=0x418488d8 self=0xfaa4a0

| sysTid=9990 nice=0 sched=0/0 cgrp=default handle=15904704

| schedstat=( 28687601 75100308 912 ) utm=2 stm=0 core=0

at java.lang.Object.wait(Native Method)

- waiting on <0x40f354f8>

at java.lang.Object.wait(Object.java:364)

at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:128)

at java.lang.Thread.run(Thread.java:856)


"Compiler" daemon prio=5 tid=4 VMWAIT

| group="system" sCount=1 dsCount=0 obj=0x418487e8 self=0xfe5760

| sysTid=9988 nice=0 sched=0/0 cgrp=default handle=15977024

| schedstat=( 340262096 612489696 1656 ) utm=24 stm=10 core=1

at dalvik.system.NativeStart.run(Native Method)


"Signal Catcher" daemon prio=5 tid=3 RUNNABLE

| group="system" sCount=0 dsCount=0 obj=0x418486f0 self=0xfd35f8

| sysTid=9986 nice=0 sched=0/0 cgrp=default handle=14590888

| schedstat=( 8508000 62775385 18 ) utm=0 stm=0 core=1

at dalvik.system.NativeStart.run(Native Method)


"GC" daemon prio=5 tid=2 VMWAIT

| group="system" sCount=1 dsCount=0 obj=0x41848610 self=0xdeac80

| sysTid=9984 nice=0 sched=0/0 cgrp=default handle=16052136

| schedstat=( 9933376138 4731591862 7027 ) utm=961 stm=32 core=1

at dalvik.system.NativeStart.run(Native Method)


This topic has been closed for replies.
Correct answer Damanjit Singh

ANR occurs when you take too long to process user input. Android mandates that user input is responded to quickly enough.

As you mentioned, you do some work in "mouse down" and "mouse up". If that work takes long to complete, ANR is bound to happen.

One possible solution is to defer the work to be done in your "mouse down" and "mouse up".

If possible, just cache relevant values in these events, and defer the actual work, to (say) EnterFrame event.

2 replies

Participating Frequently
July 21, 2013

nothing to  say  until  you  post your code . many bad habit will cause ANR . and  unfortunately, many as3 coder have  bad bad bad habit.

for example :

if  renderClass is  a  sprite contain a bitmap and a textfield .and you  init a list class like:

for (var i:int = 0 ; i < 1000 ,i++){

          var _rend:renderClass = new renderClass( bitmapobject , textfield);

          list.additem( _rend);

}

it should work  on  IOS .but ..have 90% chance .to crash main thread on  Android .

Damanjit SinghCorrect answer
Adobe Employee
July 22, 2013

ANR occurs when you take too long to process user input. Android mandates that user input is responded to quickly enough.

As you mentioned, you do some work in "mouse down" and "mouse up". If that work takes long to complete, ANR is bound to happen.

One possible solution is to defer the work to be done in your "mouse down" and "mouse up".

If possible, just cache relevant values in these events, and defer the actual work, to (say) EnterFrame event.

Maxijin2Author
Participating Frequently
July 23, 2013

Thanks a lot

Maxijin2Author
Participating Frequently
July 18, 2013

Here is another, almost same log

DALVIK THREADS:

(mutexes: tll=0 tsl=0 tscl=0 ghl=0)

"main" prio=5 tid=1 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x40f3f4c0 self=0xc957b0

| sysTid=4100 nice=0 sched=0/0 cgrp=default handle=1074337148

| schedstat=( 47868632682 13725074495 72597 ) utm=4070 stm=716 core=0

at com.adobe.air.customHandler.callTimeoutFunction(Native Method)

at com.adobe.air.customHandler.handleMessage(customHandler.java:22)

at android.os.Handler.dispatchMessage(Handler.java:99)

at android.os.Looper.loop(Looper.java:154)

at android.app.ActivityThread.main(ActivityThread.java:4624)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:511)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)

at dalvik.system.NativeStart.main(Native Method)


"Thread-13865" prio=5 tid=18 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41a81950 self=0x16c43e8

| sysTid=5775 nice=-16 sched=0/0 cgrp=default handle=26468168

| schedstat=( 369399396 123858464 1724 ) utm=26 stm=10 core=1

at dalvik.system.NativeStart.run(Native Method)


"AudioTrackThread" prio=10 tid=16 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41a7a7e0 self=0x1705788

| sysTid=5776 nice=-16 sched=0/0 cgrp=default handle=26468328

| schedstat=( 848617969 426645812 10238 ) utm=42 stm=42 core=0

at dalvik.system.NativeStart.run(Native Method)


"Binder Thread #3" prio=5 tid=17 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41a7ec58 self=0x11116e0

| sysTid=4130 nice=0 sched=0/0 cgrp=default handle=17780848

| schedstat=( 10072080 8473004 43 ) utm=1 stm=0 core=0

at dalvik.system.NativeStart.run(Native Method)


"Thread-13844" prio=5 tid=15 SUSPENDED

| group="main" sCount=1 dsCount=0 obj=0x41a47c50 self=0xfd2f50

| sysTid=4123 nice=0 sched=0/0 cgrp=default handle=16354056

| schedstat=( 1113520463 1789135748 13894 ) utm=39 stm=72 core=0

at dalvik.system.NativeStart.run(Native Method)


"Thread-13843" prio=5 tid=14 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41919d08 self=0xff2db8

| sysTid=4122 nice=0 sched=0/0 cgrp=default handle=16710104

| schedstat=( 16894239 41618999 332 ) utm=0 stm=1 core=0

at dalvik.system.NativeStart.run(Native Method)


"Thread-13841" prio=5 tid=13 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x418ac538 self=0xfdf7b0

| sysTid=4118 nice=0 sched=0/0 cgrp=default handle=16635008

| schedstat=( 417771 1170614 5 ) utm=0 stm=0 core=0

at dalvik.system.NativeStart.run(Native Method)


"Thread-13840" prio=5 tid=12 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x418e8060 self=0xfe2898

| sysTid=4117 nice=0 sched=0/0 cgrp=default handle=16280560

| schedstat=( 168455921 22615693 249 ) utm=11 stm=5 core=1

at dalvik.system.NativeStart.run(Native Method)


"java.lang.ProcessManager" daemon prio=5 tid=11 WAIT

| group="main" sCount=1 dsCount=0 obj=0x418adf78 self=0xe21018

| sysTid=4115 nice=0 sched=0/0 cgrp=default handle=16039968

| schedstat=( 1577462 288845 14 ) utm=0 stm=0 core=0

at java.lang.Object.wait(Native Method)

- waiting on <0x4188e4d0> (a java.util.HashMap)

at java.lang.Object.wait(Object.java:364)

at java.lang.ProcessManager.waitForMoreChildren(ProcessManager.java:140)

at java.lang.ProcessManager.watchChildren(ProcessManager.java:105)

at java.lang.ProcessManager.access$000(ProcessManager.java:40)

at java.lang.ProcessManager$1.run(ProcessManager.java:58)


"android.hardware.SensorManager$SensorThread" prio=5 tid=10 SUSPENDED

| group="main" sCount=1 dsCount=0 obj=0x418ea130 self=0xfdc2d8

| sysTid=4114 nice=-8 sched=0/0 cgrp=default handle=15204776

| schedstat=( 245180260 89330139 1694 ) utm=24 stm=0 core=0

at android.hardware.SensorManager.sensors_data_poll(Native Method)

at android.hardware.SensorManager$SensorThread$SensorThreadRunnable.run(SensorManager.java:498)

at java.lang.Thread.run(Thread.java:856)


"Binder Thread #2" prio=5 tid=9 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41847598 self=0xf0a960

| sysTid=4113 nice=0 sched=0/0 cgrp=default handle=16530472

| schedstat=( 7124464 19712847 46 ) utm=0 stm=0 core=1

at dalvik.system.NativeStart.run(Native Method)


"Binder Thread #1" prio=5 tid=8 NATIVE

| group="main" sCount=1 dsCount=0 obj=0x41847248 self=0xff09a0

| sysTid=4112 nice=0 sched=0/0 cgrp=default handle=16536408

| schedstat=( 12870926 22430538 71 ) utm=1 stm=0 core=0

at dalvik.system.NativeStart.run(Native Method)


"FinalizerWatchdogDaemon" daemon prio=5 tid=7 TIMED_WAIT

| group="main" sCount=1 dsCount=0 obj=0x41844108 self=0xfe48c8

| sysTid=4110 nice=0 sched=0/0 cgrp=default handle=16032952

| schedstat=( 2879696 9966383 41 ) utm=0 stm=0 core=0

at java.lang.VMThread.sleep(Native Method)

at java.lang.Thread.sleep(Thread.java:1031)

at java.lang.Thread.sleep(Thread.java:1013)

at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:213)

at java.lang.Thread.run(Thread.java:856)


"FinalizerDaemon" daemon prio=5 tid=6 WAIT

| group="main" sCount=1 dsCount=0 obj=0x41843fb0 self=0xfeed00

| sysTid=4109 nice=0 sched=0/0 cgrp=default handle=15931824

| schedstat=( 26011383 18739080 272 ) utm=0 stm=2 core=0

at java.lang.Object.wait(Native Method)

- waiting on <0x40f355d0> (a java.lang.ref.ReferenceQueue)

at java.lang.Object.wait(Object.java:401)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)

at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)

at java.lang.Thread.run(Thread.java:856)


"ReferenceQueueDaemon" daemon prio=5 tid=5 WAIT

| group="main" sCount=1 dsCount=0 obj=0x41843e48 self=0xfaa4a0

| sysTid=4108 nice=0 sched=0/0 cgrp=default handle=15904704

| schedstat=( 20708987 9289768 623 ) utm=1 stm=1 core=0

at java.lang.Object.wait(Native Method)

- waiting on <0x40f354f8>

at java.lang.Object.wait(Object.java:364)

at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:128)

at java.lang.Thread.run(Thread.java:856)


"Compiler" daemon prio=5 tid=4 VMWAIT

| group="system" sCount=1 dsCount=0 obj=0x41843d58 self=0xfe5760

| sysTid=4107 nice=0 sched=0/0 cgrp=default handle=15977024

| schedstat=( 297060002 467497608 1310 ) utm=15 stm=14 core=0

at dalvik.system.NativeStart.run(Native Method)


"Signal Catcher" daemon prio=5 tid=3 RUNNABLE

| group="system" sCount=0 dsCount=0 obj=0x4184d160 self=0xfd35f8

| sysTid=4105 nice=0 sched=0/0 cgrp=default handle=16052136

| schedstat=( 17619462 7737693 35 ) utm=0 stm=1 core=0

at dalvik.system.NativeStart.run(Native Method)


"GC" daemon prio=5 tid=2 VMWAIT

| group="system" sCount=1 dsCount=0 obj=0x4184d080 self=0xdeac80

| sysTid=4102 nice=0 sched=0/0 cgrp=default handle=14590888

| schedstat=( 6714109603 4117467474 8327 ) utm=641 stm=30 core=0

at dalvik.system.NativeStart.run(Native Method)

Adobe Employee
July 19, 2013

Could you please provide some more infomation -

1. Could you please try on latest AIR3.8 beta. A similar (laggy touch events) issue was fixed in AIR3.8 beta.

2. Could you please share your app and steps to reproduce the issue, so that we may investigate it further.

Thanks.

Maxijin2Author
Participating Frequently
July 19, 2013

Hi Damanjit,

Thank you for your quick reply.

I have included the AIR 3.8 and forutnely app is not getting stuck at the moment, however i will need 1 more day to confirm. will let you know if i face same crashes again.

One more thing so i can tell my existing users, when should we expect a stable AIR 3.8 release? Accoring to a tweet by Bill, it should be next week.