小弟写了一个android程序。在SurfaceView的create中启动了一个线程,然后再线程中进行比较费时的计算操作,然后将计算得到的结果显示在屏幕上。但是在调试的过程中,程序走到费时操作中的某些步骤的时候,就突然不做了,挂起。没有任何异常,打LOG也输不出来。网上查了一下,怀疑是ANR的问题,但是我是新开的一个线程,在新开的线程中做费时的操作。不知道是怎么会儿事儿。请兄弟们赐教呀。

解决方案 »

  1.   

    我把部分LOG贴出来,望指导。我源代码中没写任何关于broadcast的代码,不知道下面的消息是怎么出来的。
    04-15 12:12:00.351: WARN/ActivityManager(584): Hung broadcast discarded after timeout failure: now=1449030 dispatchTime=1168183 startTime=1168708 intent=Intent { action=android.intent.action.TIME_TICK flags=0x40000004 (has extras) } numReceivers=4 nextReceiver=4 state=0
    04-15 12:12:00.351: WARN/ActivityManager(584): Timeout of broadcast BroadcastRecord{43741e68 android.intent.action.TIME_TICK} - receiver=null
    04-15 12:12:00.351: WARN/ActivityManager(584): Receiver during timeout: BroadcastFilter{436f0b08 ReceiverList{436f0a90 626 android.process.acore/10003 client 436f0828}}
    04-15 12:12:00.351: INFO/ActivityManager(584): ANR (application not responding) in process: android.process.acore
    04-15 12:12:00.351: INFO/ActivityManager(584): Annotation: Broadcast of Intent { action=android.intent.action.TIME_TICK flags=0x40000004 (has extras) }
    04-15 12:12:00.351: INFO/ActivityManager(584): CPU usage:
    04-15 12:12:00.351: INFO/ActivityManager(584): Load: 1.03 / 0.71 / 0.92
    04-15 12:12:00.351: INFO/ActivityManager(584): CPU usage from 281352ms to 481ms ago:
    04-15 12:12:00.351: INFO/ActivityManager(584):   com.android.raytracing.app: 13600% = 11300% user + 2300% kernel
    04-15 12:12:00.351: INFO/ActivityManager(584):   system_server: 3000% = 1800% user + 1200% kernel
    04-15 12:12:00.351: INFO/ActivityManager(584):   logcat: 800% = 400% user + 400% kernel
    04-15 12:12:00.351: INFO/ActivityManager(584):   android.process.acore: 200% = 0% user + 200% kernel
    04-15 12:12:00.351: INFO/ActivityManager(584): TOTAL: 0% = 0% user + 0% kernel
    04-15 12:12:00.351: INFO/ActivityManager(584): Removing old ANR trace file from /data/anr/traces.txt
    04-15 12:12:00.351: DEBUG/dalvikvm(728): GC freed 46 objects / 1200 bytes in 660ms
    04-15 12:12:00.351: ERROR/Draw()(728): i = 10 j = 132
    04-15 12:12:00.351: INFO/Process(584): Sending signal. PID: 728 SIG: 3
    04-15 12:12:00.351: INFO/Process(584): Sending signal. PID: 706 SIG: 3
    04-15 12:12:00.351: INFO/dalvikvm(706): threadid=7: reacting to signal 3
    04-15 12:12:00.351: INFO/Process(584): Sending signal. PID: 651 SIG: 3
    04-15 12:12:00.351: INFO/dalvikvm(651): threadid=7: reacting to signal 3
    04-15 12:12:00.351: INFO/Process(584): Sending signal. PID: 673 SIG: 3
    04-15 12:12:00.351: INFO/dalvikvm(673): threadid=7: reacting to signal 3
    04-15 12:12:00.351: INFO/Process(584): Sending signal. PID: 639 SIG: 3
    04-15 12:12:00.351: INFO/dalvikvm(639): threadid=7: reacting to signal 3
    04-15 12:12:00.351: INFO/dalvikvm(728): threadid=7: reacting to signal 3
    04-15 12:12:00.351: INFO/Process(584): Sending signal. PID: 584 SIG: 3
    04-15 12:12:00.351: INFO/dalvikvm(584): threadid=7: reacting to signal 3
    04-15 12:12:00.351: INFO/dalvikvm(706): Wrote stack trace to '/data/anr/traces.txt'
    04-15 12:12:00.351: INFO/dalvikvm(639): Wrote stack trace to '/data/anr/traces.txt'
    04-15 12:12:00.351: DEBUG/dalvikvm(728): GC freed 46 objects / 1200 bytes in 618ms
    04-15 12:12:00.351: ERROR/Draw()(728): i = 10 j = 133
    04-15 12:12:00.351: INFO/dalvikvm(584): Wrote stack trace to '/data/anr/traces.txt'
    04-15 12:12:00.351: INFO/Process(584): Sending signal. PID: 626 SIG: 3
    04-15 12:12:00.351: INFO/dalvikvm(626): threadid=7: reacting to signal 3
    04-15 12:12:00.351: INFO/Process(584): Sending signal. PID: 623 SIG: 3
    04-15 12:12:00.351: INFO/dalvikvm(623): threadid=7: reacting to signal 3
    04-15 12:12:00.351: WARN/ActivityManager(584): finishReceiver called but none active
    04-15 12:12:00.351: INFO/dalvikvm(673): Wrote stack trace to '/data/anr/traces.txt'
    04-15 12:12:00.351: INFO/dalvikvm(626): Wrote stack trace to '/data/anr/traces.txt'
    04-15 12:12:00.351: INFO/dalvikvm(623): Wrote stack trace to '/data/anr/traces.txt'
    04-15 12:12:00.351: INFO/dalvikvm(651): Wrote stack trace to '/data/anr/traces.txt'
    04-15 12:12:00.351: INFO/dalvikvm(728): threadid=7 ODD: thread-suspend lock held (susp-all:4) but suspend not pending
    04-15 12:12:00.351: DEBUG/dalvikvm(728): GC freed 46 objects / 1200 bytes in 968ms
    04-15 12:12:00.351: ERROR/Draw()(728): i = 10 j = 134
    04-15 12:16:48.082: DEBUG/dalvikvm(728): GC freed 48 objects / 1248 bytes in 5014ms
    04-15 12:16:48.152: ERROR/dalvikvm(728): threadid=7: couldn't get thread-suspend lock (susp-all:4), bailing
    04-15 12:16:48.152: INFO/dalvikvm(728): DALVIK THREADS:
    04-15 12:16:48.152: INFO/dalvikvm(728): "main" prio=5 tid=3 RUNNABLE
    04-15 12:16:48.152: INFO/dalvikvm(728):   | group="main" sCount=0 dsCount=0 s=0 obj=0x40018e70
    04-15 12:16:48.201: ERROR/Draw()(728): i = 10 j = 135
    04-15 12:16:48.231: INFO/dalvikvm(728):   | sysTid=728 nice=0 sched=0/0 handle=-1097913188
    04-15 12:16:48.281: INFO/dalvikvm(728):   at java.lang.Object.wait(Native Method)
    04-15 12:16:48.281: INFO/dalvikvm(728):   at java.lang.Object.wait(Object.java:288)
    04-15 12:16:48.281: INFO/dalvikvm(728):   at android.os.MessageQueue.next(MessageQueue.java:148)
    04-15 12:16:48.291: INFO/dalvikvm(728):   at android.os.Looper.loop(Looper.java:110)
    04-15 12:16:48.331: INFO/dalvikvm(728):   at android.app.ActivityThread.main(ActivityThread.java:3948)
    04-15 12:16:48.331: INFO/dalvikvm(728):   at java.lang.reflect.Method.invokeNative(Native Method)
    04-15 12:16:48.331: INFO/dalvikvm(728):   at java.lang.reflect.Method.invoke(Method.java:521)
    04-15 12:16:48.331: INFO/dalvikvm(728):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
    04-15 12:16:48.331: INFO/dalvikvm(728):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
    04-15 12:16:48.411: INFO/dalvikvm(728):   at dalvik.system.NativeStart.main(Native Method)
    04-15 12:16:48.411: INFO/dalvikvm(728): "Thread-9" prio=5 tid=17 RUNNABLE
    04-15 12:16:48.411: INFO/dalvikvm(728):   | group="main" sCount=0 dsCount=0 s=0 obj=0x435e1160
    04-15 12:16:48.411: INFO/dalvikvm(728):   | sysTid=736 nice=0 sched=0/0 handle=2362896
    04-15 12:16:48.411: INFO/dalvikvm(728):   at com.android.raytracing.fundamental.vector.Vec3f.<init>(Vec3f.java:~7)
    04-15 12:16:48.411: INFO/dalvikvm(728):   at com.android.raytracing.fundamental.Ray.<init>(Ray.java:11)
    04-15 12:16:48.411: INFO/dalvikvm(728):   at com.android.raytracing.fundamental.Camera.PerspectiveCamera.generateRay(PerspectiveCamera.java:47)
    04-15 12:16:48.495: INFO/dalvikvm(728):   at com.android.raytracing.app.RaytracingRender.draw(RaytracingRender.java:183)
    04-15 12:16:48.495: INFO/dalvikvm(728):   at com.android.raytracing.app.RaytracingRender.run(RaytracingRender.java:98)
    04-15 12:16:48.495: INFO/dalvikvm(728):   at java.lang.Thread.run(Thread.java:1058)
    04-15 12:16:48.495: INFO/dalvikvm(728): "Binder Thread #3" prio=5 tid=15 NATIVE
    04-15 12:16:48.495: INFO/dalvikvm(728):   | group="main" sCount=0 dsCount=0 s=0 obj=0x435963e0
    04-15 12:16:48.495: INFO/dalvikvm(728):   | sysTid=735 nice=0 sched=0/0 handle=1487480
    04-15 12:16:48.495: INFO/dalvikvm(728):   at dalvik.system.NativeStart.run(Native Method)
    04-15 12:16:48.542: INFO/dalvikvm(728): "Binder Thread #2" prio=5 tid=13 NATIVE
    04-15 12:16:48.542: INFO/dalvikvm(728):   | group="main" sCount=1 dsCount=0 s=0 obj=0x43596320
    04-15 12:16:48.542: INFO/dalvikvm(728):   | sysTid=734 nice=0 sched=0/0 handle=1501896
    04-15 12:16:48.542: INFO/dalvikvm(728):   at dalvik.system.NativeStart.run(Native Method)
    04-15 12:16:48.542: INFO/dalvikvm(728): "Binder Thread #1" prio=5 tid=11 NATIVE
    04-15 12:16:48.542: INFO/dalvikvm(728):   | group="main" sCount=1 dsCount=0 s=0 obj=0x4358df90
    04-15 12:16:48.542: INFO/dalvikvm(728):   | sysTid=733 nice=0 sched=0/0 handle=1396752
    04-15 12:16:48.542: INFO/dalvikvm(728):   at dalvik.system.NativeStart.run(Native Method)
    04-15 12:16:48.661: INFO/dalvikvm(728): "JDWP" daemon prio=5 tid=9 VMWAIT
    04-15 12:16:48.661: INFO/dalvikvm(728):   | group="system" sCount=1 dsCount=0 s=0 obj=0x4358d2a0
    04-15 12:16:48.661: INFO/dalvikvm(728):   | sysTid=732 nice=0 sched=0/0 handle=1493656
    04-15 12:16:48.661: INFO/dalvikvm(728):   at dalvik.system.NativeStart.run(Native Method)
    04-15 12:16:48.661: INFO/dalvikvm(728): "Signal Catcher" daemon prio=5 tid=7 RUNNABLE
    04-15 12:16:48.661: INFO/dalvikvm(728):   | group="system" sCount=1 dsCount=0 s=0 obj=0x4358d1e8
    04-15 12:16:48.661: INFO/dalvikvm(728):   | sysTid=731 nice=0 sched=0/0 handle=1490832
    04-15 12:16:48.661: INFO/dalvikvm(728):   at dalvik.system.NativeStart.run(Native Method)
    04-15 12:16:48.661: INFO/dalvikvm(728): "HeapWorker" daemon prio=5 tid=5 VMWAIT
    04-15 12:16:48.661: INFO/dalvikvm(728):   | group="system" sCount=1 dsCount=0 s=0 obj=0x427d1928
    04-15 12:16:48.672: INFO/dalvikvm(728):   | sysTid=730 nice=0 sched=0/0 handle=1488192
    04-15 12:16:48.697: INFO/dalvikvm(728):   at dalvik.system.NativeStart.run(Native Method)
    04-15 12:16:48.701: ERROR/dalvikvm(728): VM aborting