Estoy implementando una aplicación bastante estándar con el sdk de Android que implica dibujar usando la configuración SurfaceView, SurfaceHolder, Callback.Android SurfaceHolder.unlockCanvasAndPost() no causa el redibujado
En mi hilo principal (hilo UI) no tengo dibujo ni manejo del SurfaceHolder (o del lienzo que recuperas con él).
En un hilo separado Tengo el siguiente:
Log.i("GAME.DrawThread", "run()");
Log.i("GAME.DrawThread", Thread.currentThread().getName());
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
synchronized(holder) {
Log.i("GAME", "draw():synchronized");
Paint paint = new Paint();
paint.setColor(R.color.draw_color);
canvas.drawColor(R.color.draw_color);
canvas.drawLine(0, 0, 500, 500, paint);
}
} catch (SurfaceHolder.BadSurfaceTypeException e) {
Log.e("GAME", "onDraw(): BadSurfaceTypeException");
} finally {
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
está siendo ejecutado este código, los tiros no hay excepciones, y no tiene efectos secundarios negativos que puedo encontrar; sin embargo, la llamada a unlockCanvasAndPost() nunca hace que se llame a onDraw().
En otras palabras, unlockCanvasAndPost() no causa un redibujado de SurfaceView.
¿Alguna idea de lo que podría causar este síntoma? Tengo mucha experiencia en java, una buena cantidad de experiencia en Android y mucha experiencia en depuración y no puedo rastrear esta.
Gracias de antemano.
Este código ahora se cuelga en Android 4.3 –