2012-04-05 9 views
7

Sigo recibiendo ANR a veces si comienzo una nueva actividad de una actividad en ejecución que tiene un SurfaceView. ¿Alguien sabe de qué se trata este bloqueo? Uso el paquete de soporte de Android para usar fragmentos, mi vista de superficie está en un fragmento.Android ANR SurfaceView

----- pid 5281 at 2012-04-05 10:59:42 ----- 
Cmd line: com.customlbs.android 

DALVIK THREADS: 
(mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0) 
"main" prio=5 tid=1 WAIT 
    | group="main" sCount=1 dsCount=0 obj=0x400281b8 self=0xd088 
    | sysTid=5281 nice=0 sched=0/0 cgrp=default handle=-1345006464 
    | schedstat=(594287586 502197465 969) 
    at java.lang.Object.wait(Native Method) 
    - waiting on <0x40028250> (a java.lang.VMThread) 
    at java.lang.Thread.parkFor(Thread.java:1424) 
    at java.lang.LangAccessImpl.parkFor(LangAccessImpl.java:48) 
    at sun.misc.Unsafe.park(Unsafe.java:337) 
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) 
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:808) 
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:841) 
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1171) 
    at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:185) 
    at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:261) 
    at android.view.SurfaceView.updateWindow(SurfaceView.java:506) 
    at android.view.SurfaceView.updateWindow(SurfaceView.java:407) 
    at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:217) 
    at android.view.View.dispatchWindowVisibilityChanged(View.java:4080) 
    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:720) 
    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:720) 
    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:720) 
    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:720) 
    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:720) 
    at android.view.ViewRoot.performTraversals(ViewRoot.java:790) 
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1868) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:130) 
    at android.app.ActivityThread.main(ActivityThread.java:3691) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:507) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
    at dalvik.system.NativeStart.main(Native Method) 

"Binder Thread #4" prio=5 tid=21 NATIVE 
    | group="main" sCount=1 dsCount=0 obj=0x40592610 self=0x1c80a8 
    | sysTid=5357 nice=0 sched=0/0 cgrp=default handle=1719752 
    | schedstat=(2032583 22732170 13) 
    at dalvik.system.NativeStart.run(Native Method) 

"Thread-22" prio=5 tid=20 TIMED_WAIT 
    | group="main" sCount=1 dsCount=0 obj=0x405759b0 self=0x1f7700 
    | sysTid=5346 nice=0 sched=0/0 cgrp=default handle=1445888 
    | schedstat=(42773840 67378464 44) 
    at java.lang.VMThread.sleep(Native Method) 
    at java.lang.Thread.sleep(Thread.java:1213) 
    at java.lang.Thread.sleep(Thread.java:1195) 
    at com.customlbs.localization.LocatingTaskDummy.run(LocatingTaskDummy.java:57) 
    at java.lang.Thread.run(Thread.java:1019) 

"SurfaceLoaderThread" prio=5 tid=19 WAIT 
    | group="main" sCount=1 dsCount=0 obj=0x4055f928 self=0x1d1a90 
    | sysTid=5343 nice=0 sched=0/0 cgrp=default handle=1855352 
    | schedstat=(631976786 273191742 777) 
    at java.lang.Object.wait(Native Method) 
    - waiting on <0x4055f928> (a com.customlbs.android.presentation.SurfaceLoader) 
    at java.lang.Object.wait(Object.java:358) 
    at com.customlbs.android.presentation.SurfaceLoader.run(SurfaceLoader.java:41) 

"SurfacePainterThread" prio=5 tid=18 WAIT 
    | group="main" sCount=1 dsCount=0 obj=0x4055f448 self=0x1c4d78 
    | sysTid=5342 nice=0 sched=0/0 cgrp=default handle=1855152 
    | schedstat=(449782042 246506659 831) 
    at java.lang.Object.wait(Native Method) 
    - waiting on <0x4055f448> (a com.customlbs.android.presentation.SurfacePainter) 
    at java.lang.Object.wait(Object.java:358) 
    at com.customlbs.android.presentation.SurfacePainter.run(SurfacePainter.java:99) 
+0

Puede usted proporcionar el código fuente? – pepyakin

+2

Ok, finalmente lo encontré. La Callback.surfaceDestroyed no esperó a que mi hilo de pintura liberara el bloqueo de lienzo, y ahora si comienzo una nueva actividad, SurfaceView.updateWindow está esperando el desbloqueo –

+0

, puede consultar estos enlaces para encontrar su solución. [link1] (http://stackoverflow.com/questions/5290148/need-some-insight-on-this-recurring-issue-anr-keydispatchingtimedoutout) [link2] (http://danbarnett.net/android-anr -keydispatchingtimedout-178.html) – Furqi

Respuesta

3

Ok finalmente lo encontré. El Callback.surfaceDestroyed no esperó a que mi hilo de pintura para liberar el bloqueo de la lona, ​​y ahora si comienzo a una nueva actividad del SurfaceView.updateWindow está esperando el desbloqueo

- Philipp König 5 de Abr a las 12:11

Cuestiones relacionadas