M0286_Libro Curso

Android

El método run() básicamente trabaja como la sincronización vertical, mien tras no tiene todos los datos a pintar, no lo actualiza.

Habrás podido observar que hemos cambiando el nombre del método a doDraw() en vez de OnDraw() . Y esto es muy importante, ya que ahora sólo podemos controlar el dibujo. Y, si alguna vez Android quiere invalidar nuestro panel, esto llamará al doDraw() que no hace nada. Ahora tenemos que manejar los hilos de nuestra clase Panel . Para esto, los nuevos métodos de la interfaz son perfectos. El método surfaceCreated() es llamado cuando el SurfaceView está listo para ser utilizado. En este punto es donde comienza nuestro hilo. También es donde tenemos que comprobar, si el hilo sigue vivo, como cuando se va a la pantalla de inicio y vuelve de nuevo. private ViewThread mThread; public Panel(Context context) { super(context); mBitmap = BitmapFactory. decodeResource (getResources(), R.drawable. icon ); } // se ejecuta cuando SurfaceView está listo para ser utilizado public void surfaceCreated(SurfaceHolder holder) { // si no está vivo if (!mThread.isAlive()) { mThread = new ViewThread(this); mThread.setRunning(true); } public void surfaceDestroyed(SurfaceHolder holder) { if (mThread.isAlive()) { mThread.setRunning(false); } } getHolder().addCallback(this); mThread = new ViewThread(this); // lanzo el hilo mThread.start(); }

92

Made with FlippingBook - Online catalogs