ANR求解,定位不到哪里出了问题,求指导,谢谢! android 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 trace.txt:----- pid 7889 at 2014-03-12 17:24:30 -----Cmd line: com.aaa.appet2DALVIK THREADS:(mutexes: tll=0 tsl=0 tscl=0 ghl=0)"main" prio=5 tid=1 NATIVE | group="main" sCount=1 dsCount=0 obj=0x41059460 self=0x129a0 | sysTid=7889 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1074082952 | schedstat=( 0 0 0 ) utm=3019 stm=719 core=0 at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:118) at android.os.Looper.loop(Looper.java:118) at android.app.ActivityThread.main(ActivityThread.java:4424) 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:853) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:579) at dalvik.system.NativeStart.main(Native Method)"Thread-277" daemon prio=5 tid=31 TIMED_WAIT | group="main" sCount=1 dsCount=0 obj=0x427c7e98 self=0x954fb0 | sysTid=8441 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3585024 | schedstat=( 0 0 0 ) utm=0 stm=0 core=1 at java.lang.VMThread.sleep(Native Method) at java.lang.Thread.sleep(Thread.java:1031) at java.lang.Thread.sleep(Thread.java:1013) at com.aaa.appet2.command.TimeoutThread.run(TimeoutThread.java:33)"Binder Thread #4" prio=5 tid=30 NATIVE | group="main" sCount=1 dsCount=0 obj=0x42c7d1e8 self=0x7c73c0 | sysTid=8375 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=9263432 | schedstat=( 0 0 0 ) utm=0 stm=1 core=1 at dalvik.system.NativeStart.run(Native Method)"Thread-215" prio=1 tid=27 SUSPENDED | group="main" sCount=1 dsCount=0 obj=0x4252d0f8 self=0x341560 | sysTid=8003 nice=19 sched=0/0 cgrp=[no-cpu-subsys] handle=3903776 | schedstat=( 0 0 0 ) utm=255 stm=740 core=1 at libcore.io.Posix.writeBytes(Native Method) at libcore.io.Posix.write(Posix.java:178) at libcore.io.BlockGuardOs.write(BlockGuardOs.java:191) at libcore.io.IoBridge.write(IoBridge.java:447) at java.io.RandomAccessFile.write(RandomAccessFile.java:692) at com.aaa.appet2.component.downLoad.DownLoadTask.run(DownLoadTask.java:96)"Thread-213" prio=5 tid=28 TIMED_WAIT | group="main" sCount=1 dsCount=0 obj=0x42d2ba98 self=0x7b7f88 | sysTid=7989 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=6525952 | schedstat=( 0 0 0 ) utm=70 stm=150 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 com.aaa.appet2.component.downLoad.DownLoadFile.download(DownLoadFile.java:583) at com.aaa.appet2.component.downLoad.DownLoadFileList$1.run(DownLoadFileList.java:381) at java.lang.Thread.run(Thread.java:856)"AsyncTask #5" prio=5 tid=14 WAIT | group="main" sCount=1 dsCount=0 obj=0x42662288 self=0x7d2368 | sysTid=7987 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=7742888 | schedstat=( 0 0 0 ) utm=11 stm=20 core=1 at java.lang.Object.wait(Native Method) - waiting on <0x42d25ea8> (a java.lang.VMThread) held by tid=14 (AsyncTask #5) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"AsyncTask #4" prio=5 tid=25 WAIT | group="main" sCount=1 dsCount=0 obj=0x4254d3e8 self=0x6b1f60 | sysTid=7965 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=6828728 | schedstat=( 0 0 0 ) utm=12 stm=19 core=0 at java.lang.Object.wait(Native Method) - waiting on <0x41528710> (a java.lang.VMThread) held by tid=25 (AsyncTask #4) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"AsyncTask #3" prio=5 tid=24 WAIT | group="main" sCount=1 dsCount=0 obj=0x42686a50 self=0x593748 | sysTid=7964 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=4914232 | schedstat=( 0 0 0 ) utm=0 stm=2 core=1 at java.lang.Object.wait(Native Method) - waiting on <0x42569bf0> (a java.lang.VMThread) held by tid=24 (AsyncTask #3) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"AsyncTask #2" prio=5 tid=23 WAIT | group="main" sCount=1 dsCount=0 obj=0x42525088 self=0x557660 | sysTid=7961 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=5621672 | schedstat=( 0 0 0 ) utm=5 stm=0 core=0 at java.lang.Object.wait(Native Method) - waiting on <0x425460b8> (a java.lang.VMThread) held by tid=23 (AsyncTask #2) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"pool-1-thread-1" prio=5 tid=22 WAIT | group="main" sCount=1 dsCount=0 obj=0x42539e20 self=0x395f48 | sysTid=7955 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1475600 | schedstat=( 0 0 0 ) utm=81 stm=6 core=1 at java.lang.Object.wait(Native Method) - waiting on <0x42513940> (a java.lang.VMThread) held by tid=22 (pool-1-thread-1) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"Binder Thread #3" prio=5 tid=21 NATIVE | group="main" sCount=1 dsCount=0 obj=0x42672f90 self=0x3874e0 | sysTid=7954 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3703032 | schedstat=( 0 0 0 ) utm=4 stm=2 core=1 at dalvik.system.NativeStart.run(Native Method)"pool-2-thread-5" prio=5 tid=20 WAIT | group="main" sCount=1 dsCount=0 obj=0x41d16970 self=0x309b80 | sysTid=7933 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3186640 | schedstat=( 0 0 0 ) utm=310 stm=97 core=0 at java.lang.Object.wait(Native Method) - waiting on <0x4164cd08> (a java.lang.VMThread) held by tid=20 (pool-2-thread-5) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) "pool-2-thread-4" prio=5 tid=19 WAIT | group="main" sCount=1 dsCount=0 obj=0x42508fa0 self=0x3091e0 | sysTid=7932 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3184176 | schedstat=( 0 0 0 ) utm=323 stm=138 core=1 at java.lang.Object.wait(Native Method) - waiting on <0x41cd2378> (a java.lang.VMThread) held by tid=19 (pool-2-thread-4) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"pool-2-thread-3" prio=5 tid=17 WAIT | group="main" sCount=1 dsCount=0 obj=0x41cfd3a8 self=0x3087c8 | sysTid=7931 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3181592 | schedstat=( 0 0 0 ) utm=330 stm=91 core=1 at java.lang.Object.wait(Native Method) - waiting on <0x41ce6648> (a java.lang.VMThread) held by tid=17 (pool-2-thread-3) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"pool-2-thread-2" prio=5 tid=16 WAIT | group="main" sCount=1 dsCount=0 obj=0x41d03f10 self=0x308070 | sysTid=7930 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3179712 | schedstat=( 0 0 0 ) utm=388 stm=135 core=0 at java.lang.Object.wait(Native Method) - waiting on <0x41ce6bc8> (a java.lang.VMThread) held by tid=16 (pool-2-thread-2) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"AsyncTask #1" prio=5 tid=18 WAIT | group="main" sCount=1 dsCount=0 obj=0x42549368 self=0x313488 | sysTid=7926 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=3106840 | schedstat=( 0 0 0 ) utm=4 stm=2 core=0 at java.lang.Object.wait(Native Method) - waiting on <0x4253ae10> (a java.lang.VMThread) held by tid=18 (AsyncTask #1) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"pool-2-thread-1" prio=5 tid=15 WAIT | group="main" sCount=1 dsCount=0 obj=0x415355e8 self=0x300630 | sysTid=7923 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3036472 | schedstat=( 0 0 0 ) utm=436 stm=186 core=0 at java.lang.Object.wait(Native Method) - waiting on <0x42503790> (a java.lang.VMThread) held by tid=15 (pool-2-thread-1) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856)"GLThread 191" prio=5 tid=13 WAIT | group="main" sCount=1 dsCount=0 obj=0x426859a8 self=0x2fc0f8 | sysTid=7922 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3129400 | schedstat=( 0 0 0 ) utm=7261 stm=777 core=1 at java.lang.Object.wait(Native Method) - waiting on <0x4145ae30> (a android.opengl.GLSurfaceView$GLThreadManager) at java.lang.Object.wait(Object.java:364) at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1421) at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1218)"Timer-0" prio=5 tid=12 WAIT | group="main" sCount=1 dsCount=0 obj=0x42684688 self=0x2fb8f0 | sysTid=7921 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3128640 | schedstat=( 0 0 0 ) utm=15 stm=20 core=0 at java.lang.Object.wait(Native Method) - waiting on <0x42684688> (a java.util.Timer$TimerImpl) at java.lang.Object.wait(Object.java:364) at java.util.Timer$TimerImpl.run(Timer.java:214)"Thread-182" prio=5 tid=11 NATIVE | group="main" sCount=1 dsCount=0 obj=0x41cedb78 self=0x2174e8 | sysTid=7908 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1641784 | schedstat=( 0 0 0 ) utm=78 stm=45 core=0 at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:118) at android.os.Looper.loop(Looper.java:118) at com.aaa.appet2.command.Processor.run(Processor.java:255)"Binder Thread #2" prio=5 tid=10 NATIVE | group="main" sCount=1 dsCount=0 obj=0x41cd38f8 self=0x16c2e0 | sysTid=7901 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1660096 | schedstat=( 0 0 0 ) utm=6 stm=4 core=1 at dalvik.system.NativeStart.run(Native Method)"Binder Thread #1" prio=5 tid=9 NATIVE | group="main" sCount=1 dsCount=0 obj=0x41cd46b8 self=0x1c5818 | sysTid=7900 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1953464 | schedstat=( 0 0 0 ) utm=2 stm=1 core=1 at dalvik.system.NativeStart.run(Native Method)"FinalizerWatchdogDaemon" daemon prio=5 tid=8 TIMED_WAIT | group="main" sCount=1 dsCount=0 obj=0x41cd5978 self=0x20ed18 | sysTid=7899 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1579080 | schedstat=( 0 0 0 ) utm=1 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=7 WAIT | group="main" sCount=1 dsCount=0 obj=0x41cd5d38 self=0x228bc0 | sysTid=7898 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1838944 | schedstat=( 0 0 0 ) utm=46 stm=19 core=0 at java.lang.Object.wait(Native Method) - waiting on <0x4104f5d0> (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=6 WAIT | group="main" sCount=1 dsCount=0 obj=0x41cd6148 self=0x1c3fb0 | sysTid=7897 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1838848 | schedstat=( 0 0 0 ) utm=9 stm=4 core=0 at java.lang.Object.wait(Native Method) - waiting on <0x4104f4f8> 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=5 VMWAIT | group="system" sCount=1 dsCount=0 obj=0x41cd6508 self=0x214938 | sysTid=7896 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1557176 | schedstat=( 0 0 0 ) utm=194 stm=144 core=1 at dalvik.system.NativeStart.run(Native Method)"JDWP" daemon prio=5 tid=4 VMWAIT | group="system" sCount=1 dsCount=0 obj=0x41cd6fe8 self=0x21d378 | sysTid=7895 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1958360 | schedstat=( 0 0 0 ) utm=1 stm=1 core=1 at dalvik.system.NativeStart.run(Native Method)"Signal Catcher" daemon prio=5 tid=3 RUNNABLE | group="system" sCount=0 dsCount=0 obj=0x41cd87d0 self=0xcfb40 | sysTid=7893 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=2262368 | schedstat=( 0 0 0 ) utm=4 stm=11 core=1 at dalvik.system.NativeStart.run(Native Method)"GC" daemon prio=5 tid=2 VMWAIT | group="system" sCount=1 dsCount=0 obj=0x41cd9f70 self=0x1570a8 | sysTid=7890 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=2047736 | schedstat=( 0 0 0 ) utm=760 stm=77 core=0 at dalvik.system.NativeStart.run(Native Method)----- end 7889 ----- Android自带的定位不行,推荐用三方定位。比如百度,高德。很容易集成,且精准,快捷。 大哥,我这个是ANR,定位不到问题在哪,不是GPS定位。 1.若用三方定位,则很快就能定位(5秒以内),所以不会出现Application Not Response异常2.你现在出现ANR异常,估计是把定位这个耗时的操作写在了UI线程中了。。 大哥你好,不好意思,我标题没写清楚。不是应用程序定位不到地理位置,是我应用商店运行时出现ANR,我找不到原因,确定不了引起问题原因在哪。和地理位置的定位没有关系,log和trace都贴出来了,是消息队列堵塞了,我看了下我业务逻辑处理都是在线程中运行,UI线程都是处理UI的业务。请各位大神,帮忙分析log,看ANR是哪里引起的,谢谢! 第一步,先pull出/data/anr/traces.txt文件。第二步,查看app被杀死时的进程id,你这里我看是7889。第三步,查看traces.txt里关于该进程id的信息。 是不是就这里,sleep过久了? | sysTid=7899 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1579080 | schedstat=( 0 0 0 ) utm=1 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) 大哥你好,为什么定位到这里呢?这里是系统的watchdog线程,代码没有对这个线程进行操作哦。不是只看main线程就可以了么?main线程只显示message queue异常,我看了下UI线程Handler的处理都是UI控件的处理没有耗时或者block的操作。请大神再指点一下,谢谢! DALVIK THREADS:(mutexes: tll=0 tsl=0 tscl=0 ghl=0)"main" prio=5 tid=1 NATIVE | group="main" sCount=1 dsCount=0 obj=0x41059460 self=0x129a0 | sysTid=7889 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1074082952 | schedstat=( 0 0 0 ) utm=3019 stm=719 core=0 at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:118) at android.os.Looper.loop(Looper.java:118) at android.app.ActivityThread.main(ActivityThread.java:4424) 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:853) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:579) at dalvik.system.NativeStart.main(Native Method)说明主线程在等待下一条消息进入消息队列,那请问是谁引起这个问题呢?是CPU使用率高100%导致主线程卡住了?还是什么原因引起的? 大哥你好,不好意思,我标题没写清楚。不是应用程序定位不到地理位置,是我应用商店运行时出现ANR,我找不到原因,确定不了引起问题原因在哪。和地理位置的定位没有关系,log和trace都贴出来了,是消息队列堵塞了,我看了下我业务逻辑处理都是在线程中运行,UI线程都是处理UI的业务。请各位大神,帮忙分析log,看ANR是哪里引起的,谢谢!不好意思,对定位太敏感了,,看错了。。我看了下估计是在SearchActivity中出现了问题,log说:keyDispatchingTimedOut,你看看这里是不是有什么问题?key分发超时?E/ActivityManager( 976): ANR in com.aaa.appet2 (com.aaa.appet2/.ui.search.SearchActivity)E/ActivityManager( 976): Reason: keyDispatchingTimedOutE/ActivityManager( 976): Load: 5.3 / 3.61 / 2.38E/ActivityManager( 976): CPU usage from 8732ms to 0ms ago with 99% awake:E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernelE/ActivityManager( 976): 42% 7889/com.aaa.appet2: 29% user + 13% kernel / faults: 6332 minor 3 majorE/ActivityManager( 976): 12% 714/ld-linux.so.3: 2.6% user + 9.7% kernel / faults: 221 minor 4 majorE/ActivityManager( 976): 8.4% 391/mmcqd: 0% user + 8.4% kernelE/ActivityManager( 976): 2.7% 976/system_server: 1.1% user + 1.6% kernel / faults: 649 minor 14 majorE/ActivityManager( 976): 2.2% 288/kswapd0: 0% user + 2.2% kernel 大哥你好,为什么定位到这里呢?这里是系统的watchdog线程,代码没有对这个线程进行操作哦。不是只看main线程就可以了么?main线程只显示message queue异常,我看了下UI线程Handler的处理都是UI控件的处理没有耗时或者block的操作。请大神再指点一下,谢谢!不好意思,看错了。以下是cpu在anr发生前的使用情况:E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernelE/ActivityManager( 976): 42% 7889/com.aaa.appet2: 29% user + 13% kernel / faults: 6332 minor 3 majorE/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq45%花费在iowait,好像是io操作花了很多的时间。然后你的app有很多额外的线程在跑,它们是否给主线程发了太多的消息才阻塞?目前我就只能看出这么多了,希望有点帮助 大哥你好,为什么定位到这里呢?这里是系统的watchdog线程,代码没有对这个线程进行操作哦。不是只看main线程就可以了么?main线程只显示message queue异常,我看了下UI线程Handler的处理都是UI控件的处理没有耗时或者block的操作。请大神再指点一下,谢谢!不好意思,看错了。以下是cpu在anr发生前的使用情况:E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernelE/ActivityManager( 976): 42% 7889/com.aaa.appet2: 29% user + 13% kernel / faults: 6332 minor 3 majorE/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq45%花费在iowait,好像是io操作花了很多的时间。然后你的app有很多额外的线程在跑,它们是否给主线程发了太多的消息才阻塞?目前我就只能看出这么多了,希望有点帮助大哥你好,说的和我分析的一样,问题就来了,iowait 45%有点高,我查了,我读写randomfile是放在子线程里面操作的,放子线程操作就算iowait应该也不会引起UI线程的堵塞。但是你说的因为子线程太多给UI线程发的消息太多,处理不过来导致UI线程堵塞,有可能是这个引起的,但是我看了接收信息的handler的处理,都是UI控件的操作,如果有业务操作都会发指令,开新的子线程来执行,这是否有影响?在此感谢各位大哥帮忙! 大哥你好,不好意思,我标题没写清楚。不是应用程序定位不到地理位置,是我应用商店运行时出现ANR,我找不到原因,确定不了引起问题原因在哪。和地理位置的定位没有关系,log和trace都贴出来了,是消息队列堵塞了,我看了下我业务逻辑处理都是在线程中运行,UI线程都是处理UI的业务。请各位大神,帮忙分析log,看ANR是哪里引起的,谢谢!不好意思,对定位太敏感了,,看错了。。我看了下估计是在SearchActivity中出现了问题,log说:keyDispatchingTimedOut,你看看这里是不是有什么问题?key分发超时?E/ActivityManager( 976): ANR in com.aaa.appet2 (com.aaa.appet2/.ui.search.SearchActivity)E/ActivityManager( 976): Reason: keyDispatchingTimedOutE/ActivityManager( 976): Load: 5.3 / 3.61 / 2.38E/ActivityManager( 976): CPU usage from 8732ms to 0ms ago with 99% awake:E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernelE/ActivityManager( 976): 42% 7889/com.aaa.appet2: 29% user + 13% kernel / faults: 6332 minor 3 majorE/ActivityManager( 976): 12% 714/ld-linux.so.3: 2.6% user + 9.7% kernel / faults: 221 minor 4 majorE/ActivityManager( 976): 8.4% 391/mmcqd: 0% user + 8.4% kernelE/ActivityManager( 976): 2.7% 976/system_server: 1.1% user + 1.6% kernel / faults: 649 minor 14 majorE/ActivityManager( 976): 2.2% 288/kswapd0: 0% user + 2.2% kernel大哥你好,dispatch key timeout是ANR的一种类型,从log看没有在按键处理的地方堵塞了。谢谢! 前面的定位有点搞笑,呵呵。主线程处于消息等待的状态,应该是正确的。但是ANR前后IOwait占的比例有点高:E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq应该是和io有关系,从下面的线程看感觉和下面的有关系,线程状态SUSPENDED,且处于io写太耗时了。并且是从楼主自己代码.DownLoadTask.run触发的。"Thread-215" prio=1 tid=27 SUSPENDED | group="main" sCount=1 dsCount=0 obj=0x4252d0f8 self=0x341560 | sysTid=8003 nice=19 sched=0/0 cgrp=[no-cpu-subsys] handle=3903776 | schedstat=( 0 0 0 ) utm=255 stm=740 core=1 at libcore.io.Posix.writeBytes(Native Method) at libcore.io.Posix.write(Posix.java:178) at libcore.io.BlockGuardOs.write(BlockGuardOs.java:191) at libcore.io.IoBridge.write(IoBridge.java:447) at java.io.RandomAccessFile.write(RandomAccessFile.java:692) at com.aaa.appet2.component.downLoad.DownLoadTask.run(DownLoadTask.java:96)楼主可以在.DownLoadTask.run中强行做一个多循环写操作,看能否复现该问题。 你好,这个写操作是放在新创建的线程里执行的,的确占cpu有点高45%,但是不应该会影响到主线程导致ANR,求解!谢谢! 楼主,能教教我怎么分析trace.txt吗?谢谢 HelloWrod过不去呀 android开发真机测试连接pc端问题??求教 求助一个gridview显示数据库存储图片的uri的问题 从网络下载文本出错 制作一个电子词典:如何初始化大量SQLite数据(求高手指点) 如何在浏览器中打开本地应用 attach of thread 'binder thread #3'failed 我还有问题 下载的下来程序出现错误数据 在调用actionbarsherlock的时候,You must use Theme.Sherlock Fragment为什么不加载ListView,请教怎么回事,急急急 Android页面里画柱状图和动态折线图
----- pid 7889 at 2014-03-12 17:24:30 -----
Cmd line: com.aaa.appet2DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41059460 self=0x129a0
| sysTid=7889 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1074082952
| schedstat=( 0 0 0 ) utm=3019 stm=719 core=0
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:118)
at android.os.Looper.loop(Looper.java:118)
at android.app.ActivityThread.main(ActivityThread.java:4424)
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:853)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:579)
at dalvik.system.NativeStart.main(Native Method)"Thread-277" daemon prio=5 tid=31 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x427c7e98 self=0x954fb0
| sysTid=8441 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3585024
| schedstat=( 0 0 0 ) utm=0 stm=0 core=1
at java.lang.VMThread.sleep(Native Method)
at java.lang.Thread.sleep(Thread.java:1031)
at java.lang.Thread.sleep(Thread.java:1013)
at com.aaa.appet2.command.TimeoutThread.run(TimeoutThread.java:33)"Binder Thread #4" prio=5 tid=30 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x42c7d1e8 self=0x7c73c0
| sysTid=8375 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=9263432
| schedstat=( 0 0 0 ) utm=0 stm=1 core=1
at dalvik.system.NativeStart.run(Native Method)"Thread-215" prio=1 tid=27 SUSPENDED
| group="main" sCount=1 dsCount=0 obj=0x4252d0f8 self=0x341560
| sysTid=8003 nice=19 sched=0/0 cgrp=[no-cpu-subsys] handle=3903776
| schedstat=( 0 0 0 ) utm=255 stm=740 core=1
at libcore.io.Posix.writeBytes(Native Method)
at libcore.io.Posix.write(Posix.java:178)
at libcore.io.BlockGuardOs.write(BlockGuardOs.java:191)
at libcore.io.IoBridge.write(IoBridge.java:447)
at java.io.RandomAccessFile.write(RandomAccessFile.java:692)
at com.aaa.appet2.component.downLoad.DownLoadTask.run(DownLoadTask.java:96)"Thread-213" prio=5 tid=28 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x42d2ba98 self=0x7b7f88
| sysTid=7989 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=6525952
| schedstat=( 0 0 0 ) utm=70 stm=150 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 com.aaa.appet2.component.downLoad.DownLoadFile.download(DownLoadFile.java:583)
at com.aaa.appet2.component.downLoad.DownLoadFileList$1.run(DownLoadFileList.java:381)
at java.lang.Thread.run(Thread.java:856)"AsyncTask #5" prio=5 tid=14 WAIT
| group="main" sCount=1 dsCount=0 obj=0x42662288 self=0x7d2368
| sysTid=7987 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=7742888
| schedstat=( 0 0 0 ) utm=11 stm=20 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x42d25ea8> (a java.lang.VMThread) held by tid=14 (AsyncTask #5)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"AsyncTask #4" prio=5 tid=25 WAIT
| group="main" sCount=1 dsCount=0 obj=0x4254d3e8 self=0x6b1f60
| sysTid=7965 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=6828728
| schedstat=( 0 0 0 ) utm=12 stm=19 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41528710> (a java.lang.VMThread) held by tid=25 (AsyncTask #4)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"AsyncTask #3" prio=5 tid=24 WAIT
| group="main" sCount=1 dsCount=0 obj=0x42686a50 self=0x593748
| sysTid=7964 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=4914232
| schedstat=( 0 0 0 ) utm=0 stm=2 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x42569bf0> (a java.lang.VMThread) held by tid=24 (AsyncTask #3)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"AsyncTask #2" prio=5 tid=23 WAIT
| group="main" sCount=1 dsCount=0 obj=0x42525088 self=0x557660
| sysTid=7961 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=5621672
| schedstat=( 0 0 0 ) utm=5 stm=0 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x425460b8> (a java.lang.VMThread) held by tid=23 (AsyncTask #2)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"pool-1-thread-1" prio=5 tid=22 WAIT
| group="main" sCount=1 dsCount=0 obj=0x42539e20 self=0x395f48
| sysTid=7955 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1475600
| schedstat=( 0 0 0 ) utm=81 stm=6 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x42513940> (a java.lang.VMThread) held by tid=22 (pool-1-thread-1)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"Binder Thread #3" prio=5 tid=21 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x42672f90 self=0x3874e0
| sysTid=7954 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3703032
| schedstat=( 0 0 0 ) utm=4 stm=2 core=1
at dalvik.system.NativeStart.run(Native Method)"pool-2-thread-5" prio=5 tid=20 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41d16970 self=0x309b80
| sysTid=7933 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3186640
| schedstat=( 0 0 0 ) utm=310 stm=97 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x4164cd08> (a java.lang.VMThread) held by tid=20 (pool-2-thread-5)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
"pool-2-thread-4" prio=5 tid=19 WAIT
| group="main" sCount=1 dsCount=0 obj=0x42508fa0 self=0x3091e0
| sysTid=7932 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3184176
| schedstat=( 0 0 0 ) utm=323 stm=138 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x41cd2378> (a java.lang.VMThread) held by tid=19 (pool-2-thread-4)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"pool-2-thread-3" prio=5 tid=17 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41cfd3a8 self=0x3087c8
| sysTid=7931 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3181592
| schedstat=( 0 0 0 ) utm=330 stm=91 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x41ce6648> (a java.lang.VMThread) held by tid=17 (pool-2-thread-3)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"pool-2-thread-2" prio=5 tid=16 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41d03f10 self=0x308070
| sysTid=7930 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3179712
| schedstat=( 0 0 0 ) utm=388 stm=135 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41ce6bc8> (a java.lang.VMThread) held by tid=16 (pool-2-thread-2)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"AsyncTask #1" prio=5 tid=18 WAIT
| group="main" sCount=1 dsCount=0 obj=0x42549368 self=0x313488
| sysTid=7926 nice=10 sched=0/0 cgrp=[no-cpu-subsys] handle=3106840
| schedstat=( 0 0 0 ) utm=4 stm=2 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x4253ae10> (a java.lang.VMThread) held by tid=18 (AsyncTask #1)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"pool-2-thread-1" prio=5 tid=15 WAIT
| group="main" sCount=1 dsCount=0 obj=0x415355e8 self=0x300630
| sysTid=7923 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3036472
| schedstat=( 0 0 0 ) utm=436 stm=186 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x42503790> (a java.lang.VMThread) held by tid=15 (pool-2-thread-1)
at java.lang.Thread.parkFor(Thread.java:1231)
at sun.misc.Unsafe.park(Unsafe.java:323)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)"GLThread 191" prio=5 tid=13 WAIT
| group="main" sCount=1 dsCount=0 obj=0x426859a8 self=0x2fc0f8
| sysTid=7922 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3129400
| schedstat=( 0 0 0 ) utm=7261 stm=777 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x4145ae30> (a android.opengl.GLSurfaceView$GLThreadManager)
at java.lang.Object.wait(Object.java:364)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1421)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1218)"Timer-0" prio=5 tid=12 WAIT
| group="main" sCount=1 dsCount=0 obj=0x42684688 self=0x2fb8f0
| sysTid=7921 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=3128640
| schedstat=( 0 0 0 ) utm=15 stm=20 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x42684688> (a java.util.Timer$TimerImpl)
at java.lang.Object.wait(Object.java:364)
at java.util.Timer$TimerImpl.run(Timer.java:214)"Thread-182" prio=5 tid=11 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41cedb78 self=0x2174e8
| sysTid=7908 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1641784
| schedstat=( 0 0 0 ) utm=78 stm=45 core=0
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:118)
at android.os.Looper.loop(Looper.java:118)
at com.aaa.appet2.command.Processor.run(Processor.java:255)"Binder Thread #2" prio=5 tid=10 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41cd38f8 self=0x16c2e0
| sysTid=7901 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1660096
| schedstat=( 0 0 0 ) utm=6 stm=4 core=1
at dalvik.system.NativeStart.run(Native Method)"Binder Thread #1" prio=5 tid=9 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41cd46b8 self=0x1c5818
| sysTid=7900 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1953464
| schedstat=( 0 0 0 ) utm=2 stm=1 core=1
at dalvik.system.NativeStart.run(Native Method)"FinalizerWatchdogDaemon" daemon prio=5 tid=8 TIMED_WAIT
| group="main" sCount=1 dsCount=0 obj=0x41cd5978 self=0x20ed18
| sysTid=7899 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1579080
| schedstat=( 0 0 0 ) utm=1 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=7 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41cd5d38 self=0x228bc0
| sysTid=7898 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1838944
| schedstat=( 0 0 0 ) utm=46 stm=19 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x4104f5d0> (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=6 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41cd6148 self=0x1c3fb0
| sysTid=7897 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1838848
| schedstat=( 0 0 0 ) utm=9 stm=4 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x4104f4f8>
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=5 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x41cd6508 self=0x214938
| sysTid=7896 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1557176
| schedstat=( 0 0 0 ) utm=194 stm=144 core=1
at dalvik.system.NativeStart.run(Native Method)"JDWP" daemon prio=5 tid=4 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x41cd6fe8 self=0x21d378
| sysTid=7895 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1958360
| schedstat=( 0 0 0 ) utm=1 stm=1 core=1
at dalvik.system.NativeStart.run(Native Method)"Signal Catcher" daemon prio=5 tid=3 RUNNABLE
| group="system" sCount=0 dsCount=0 obj=0x41cd87d0 self=0xcfb40
| sysTid=7893 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=2262368
| schedstat=( 0 0 0 ) utm=4 stm=11 core=1
at dalvik.system.NativeStart.run(Native Method)"GC" daemon prio=5 tid=2 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x41cd9f70 self=0x1570a8
| sysTid=7890 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=2047736
| schedstat=( 0 0 0 ) utm=760 stm=77 core=0
at dalvik.system.NativeStart.run(Native Method)----- end 7889 -----
大哥,我这个是ANR,定位不到问题在哪,不是GPS定位。
2.你现在出现ANR异常,估计是把定位这个耗时的操作写在了UI线程中了。。
不是应用程序定位不到地理位置,是我应用商店运行时出现ANR,我找不到原因,确定不了引起问题原因在哪。
和地理位置的定位没有关系,log和trace都贴出来了,是消息队列堵塞了,我看了下我业务逻辑处理都是在线程中运行,UI线程都是处理UI的业务。
请各位大神,帮忙分析log,看ANR是哪里引起的,谢谢!
第二步,查看app被杀死时的进程id,你这里我看是7889。
第三步,查看traces.txt里关于该进程id的信息。
| sysTid=7899 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1579080
| schedstat=( 0 0 0 ) utm=1 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)
不是只看main线程就可以了么?main线程只显示message queue异常,我看了下UI线程Handler的处理都是UI控件的处理没有耗时或者block的操作。
请大神再指点一下,谢谢!
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41059460 self=0x129a0
| sysTid=7889 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1074082952
| schedstat=( 0 0 0 ) utm=3019 stm=719 core=0
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:118)
at android.os.Looper.loop(Looper.java:118)
at android.app.ActivityThread.main(ActivityThread.java:4424)
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:853)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:579)
at dalvik.system.NativeStart.main(Native Method)说明主线程在等待下一条消息进入消息队列,那请问是谁引起这个问题呢?
是CPU使用率高100%导致主线程卡住了?还是什么原因引起的?
不是应用程序定位不到地理位置,是我应用商店运行时出现ANR,我找不到原因,确定不了引起问题原因在哪。
和地理位置的定位没有关系,log和trace都贴出来了,是消息队列堵塞了,我看了下我业务逻辑处理都是在线程中运行,UI线程都是处理UI的业务。
请各位大神,帮忙分析log,看ANR是哪里引起的,谢谢!
不好意思,对定位太敏感了,,看错了。。
我看了下估计是在SearchActivity中出现了问题,
log说:keyDispatchingTimedOut,你看看这里是不是有什么问题?
key分发超时?
E/ActivityManager( 976): ANR in com.aaa.appet2 (com.aaa.appet2/.ui.search.SearchActivity)
E/ActivityManager( 976): Reason: keyDispatchingTimedOut
E/ActivityManager( 976): Load: 5.3 / 3.61 / 2.38
E/ActivityManager( 976): CPU usage from 8732ms to 0ms ago with 99% awake:
E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernel
E/ActivityManager( 976): 42% 7889/com.aaa.appet2: 29% user + 13% kernel / faults: 6332 minor 3 major
E/ActivityManager( 976): 12% 714/ld-linux.so.3: 2.6% user + 9.7% kernel / faults: 221 minor 4 major
E/ActivityManager( 976): 8.4% 391/mmcqd: 0% user + 8.4% kernel
E/ActivityManager( 976): 2.7% 976/system_server: 1.1% user + 1.6% kernel / faults: 649 minor 14 major
E/ActivityManager( 976): 2.2% 288/kswapd0: 0% user + 2.2% kernel
不是只看main线程就可以了么?main线程只显示message queue异常,我看了下UI线程Handler的处理都是UI控件的处理没有耗时或者block的操作。
请大神再指点一下,谢谢!
不好意思,看错了。
以下是cpu在anr发生前的使用情况:
E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernel
E/ActivityManager( 976): 42% 7889/com.aaa.appet2: 29% user + 13% kernel / faults: 6332 minor 3 major
E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq45%花费在iowait,好像是io操作花了很多的时间。然后你的app有很多额外的线程在跑,它们是否给主线程发了太多的消息才阻塞?目前我就只能看出这么多了,希望有点帮助
不是只看main线程就可以了么?main线程只显示message queue异常,我看了下UI线程Handler的处理都是UI控件的处理没有耗时或者block的操作。
请大神再指点一下,谢谢!
不好意思,看错了。
以下是cpu在anr发生前的使用情况:
E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernel
E/ActivityManager( 976): 42% 7889/com.aaa.appet2: 29% user + 13% kernel / faults: 6332 minor 3 major
E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq45%花费在iowait,好像是io操作花了很多的时间。然后你的app有很多额外的线程在跑,它们是否给主线程发了太多的消息才阻塞?目前我就只能看出这么多了,希望有点帮助
大哥你好,说的和我分析的一样,问题就来了,iowait 45%有点高,我查了,我读写randomfile是放在子线程里面操作的,放子线程操作就算iowait应该也不会引起UI线程的堵塞。
但是你说的因为子线程太多给UI线程发的消息太多,处理不过来导致UI线程堵塞,有可能是这个引起的,但是我看了接收信息的handler的处理,都是UI控件的操作,如果有业务操作都会发指令,开新的子线程来执行,这是否有影响?
在此感谢各位大哥帮忙!
不是应用程序定位不到地理位置,是我应用商店运行时出现ANR,我找不到原因,确定不了引起问题原因在哪。
和地理位置的定位没有关系,log和trace都贴出来了,是消息队列堵塞了,我看了下我业务逻辑处理都是在线程中运行,UI线程都是处理UI的业务。
请各位大神,帮忙分析log,看ANR是哪里引起的,谢谢!
不好意思,对定位太敏感了,,看错了。。
我看了下估计是在SearchActivity中出现了问题,
log说:keyDispatchingTimedOut,你看看这里是不是有什么问题?
key分发超时?
E/ActivityManager( 976): ANR in com.aaa.appet2 (com.aaa.appet2/.ui.search.SearchActivity)
E/ActivityManager( 976): Reason: keyDispatchingTimedOut
E/ActivityManager( 976): Load: 5.3 / 3.61 / 2.38
E/ActivityManager( 976): CPU usage from 8732ms to 0ms ago with 99% awake:
E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernel
E/ActivityManager( 976): 42% 7889/com.aaa.appet2: 29% user + 13% kernel / faults: 6332 minor 3 major
E/ActivityManager( 976): 12% 714/ld-linux.so.3: 2.6% user + 9.7% kernel / faults: 221 minor 4 major
E/ActivityManager( 976): 8.4% 391/mmcqd: 0% user + 8.4% kernel
E/ActivityManager( 976): 2.7% 976/system_server: 1.1% user + 1.6% kernel / faults: 649 minor 14 major
E/ActivityManager( 976): 2.2% 288/kswapd0: 0% user + 2.2% kernel
大哥你好,dispatch key timeout是ANR的一种类型,从log看没有在按键处理的地方堵塞了。谢谢!
主线程处于消息等待的状态,应该是正确的。但是ANR前后IOwait占的比例有点高:
E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq
应该是和io有关系,从下面的线程看感觉和下面的有关系,线程状态SUSPENDED,且处于io写太耗时了。并且是从楼主自己代码.DownLoadTask.run触发的。
"Thread-215" prio=1 tid=27 SUSPENDED
| group="main" sCount=1 dsCount=0 obj=0x4252d0f8 self=0x341560
| sysTid=8003 nice=19 sched=0/0 cgrp=[no-cpu-subsys] handle=3903776
| schedstat=( 0 0 0 ) utm=255 stm=740 core=1
at libcore.io.Posix.writeBytes(Native Method)
at libcore.io.Posix.write(Posix.java:178)
at libcore.io.BlockGuardOs.write(BlockGuardOs.java:191)
at libcore.io.IoBridge.write(IoBridge.java:447)
at java.io.RandomAccessFile.write(RandomAccessFile.java:692)
at com.aaa.appet2.component.downLoad.DownLoadTask.run(DownLoadTask.java:96)楼主可以在.DownLoadTask.run中强行做一个多循环写操作,看能否复现该问题。