Solución para Android SurfaceView touch lag
He terminado de programar un juego funcional de Android, pero no sé dónde mirar para solucionar el retraso de toque: En cualquier momento la pantalla se toca, el framerate cae por la mitad. Mi código es básicamente una copia y pega de LunarLander con un onTouchEvent.
Las búsquedas de Google me muestran soluciones básicas que dicen que funcionan pero no (durmiendo enTouchEvent, onDispatchEvent, onInterceptTouchEvent, sincronizado, etc.) y parece que es imposible usar SurfaceView sin inmenso retraso durante los eventos táctiles.
- Crear ImageView de forma programática sin diseño
- Administrar los objetos View y Class <?> Actuales
- Android - ¿Cómo circular zoom / ampliar parte de la imagen?
- agregar imagen a la vista de la superficie en android
- Cómo averiguar si una vista de Android está oscurecida por cualquier otra vista
¿Que debería hacer? ¿Debo abandonar SurfaceView, desactivar onTouchEvent y utilizar un clickListener, de alguna manera bloquear las llamadas rápidas de contacto? Por favor, dime lo que está mal!
He intentado:
- Hacer que onTouchEvent () no ejecute ningún código y devuelva false
- Al dormir el onTouchEvent () o ejecutar () durante 16/32/1000 milisegundos, no hay diferencia
- Anulación onDispatchevent () en lugar de onTouchEvent ()
- Experimentando con synchronized () en onTouchEvent ()
Y aquí está mi código:
public class Surface extends SurfaceView implements SurfaceHolder.Callback { public CanvasThread canvasThread; private SurfaceHolder surfaceHolder; public Surface(Context context) { super(context); surfaceHolder = getHolder(); surfaceHolder.addCallback(this); setFocusable(true); } @Override public boolean onTouchEvent(MotionEvent event) { return canvasThread.touch(event); } class CanvasThread extends Thread { @Override public void run() { synchronized (this) { // game logic } } public boolean touch(MotionEvent event) { // touch logic } } }
- Android: ¿Cómo hacer una vista previa de cámara en forma de círculo?
- La imagen local de Android que se muestra a través de la vista web está borrosa
- Vista de carrusel de imagen de Android (sentido como)
- Toca dos vistas al mismo tiempo en android
- Reproducción de vídeo en un GLSurfaceView en lugar de SurfaceView
- Superponer imágenes en la vista previa de la cámara SurfaceView
- Configurar la tipografía de la sugerencia en TextEdit
- Imagen de mapa de bits sin memoria
- Servidor de la cámara fallecido – El error 100 persiste en algunos dispositivos
- Android: cambia el ancho del menú de desbordamiento