Actividad 04 Android: AsyncTask & DialogFragment

1-hlg1dppvr-47o7tlbdekeg

En esta entrada del portfolio voy a explicar cómo he desarrollado la práctica 04 de Programación Multimedia y Dispositivos Móviles  donde se he hecho uso de algunos de los elementos más importantes en desarrollo Android: AsyncTask y DialogFragment.

  • AsyncTask: Clase que contiene un conjunto de métodos a sobrescribir que se ejecutan en el hilo correspondiente para llevar a cabo cualquier operación que requiera actualizaciones en la interfaz.
  • DialogFragment: Es un fragment que flota en el centro de nuestra actividad. Son útiles a la hora de necesitar que el usuario responda a algo para continuar con la ejecución. Para crear un DialogFragment, tenemos que heredar de la clase base DialogFragment.

Para el uso de estos elementos he realizado una pequeña aplicación en formato de videojuego llamado CastañerGame. Al darle a jugar, aparecerá un FragmentDialog donde podremos introducir nuestro nombre y seleccionar la dificultad del juego:

 

captura-de-pantalla-2017-02-20-a-las-12-43-14 captura-de-pantalla-2017-02-20-a-las-12-46-45

Dependiendo de la dificultad que hayamos elegido nuestra barra de progreso tendrá una velocidad mayor o menor. El objetivo del juego es pulsar los cuatro botones. Cuando pulsemos los cuatro, éstos se desordenarán, pasaremos a la siguiente fase e incrementaremos la velocidad. Cuando lleguemos al GameOver porque la barra se ha completado, aparecerán nuestros resultados en un DialogFragment:

captura-de-pantalla-2017-02-20-a-las-12-55-48captura-de-pantalla-2017-02-20-a-las-12-56-51

Para que nuestra barra progrese de forma asíncrona hemos tenido que utilizar los distintos métodos que AsyncTask nos ofrece:

asynctask_steps

  • onPreExecute(): se ejecuta antes de iniciar el proceso en el mismo hilo de ejecución que la aplicación. Sirve por ejemplo para inicializar alguna barra de progreso que informe del estado de la tarea.
  • doInBackground(): ejecuta la tarea en un hilo diferente al de ejecución con el fin de no bloquear la interfaz. Es el único método que es necesario sobrescribir, y muchas veces será el único que utilizaremos.
  • onProgressUpdate(): recibe información sobre el progreso de la tarea llamando a la función publishProgress() desde doInBackground(). Se ejecuta en el hilo principal y se suele utilizar para actualizar los elementos que informen al usuario del progreso, como una ProgressBar.
  • onPostExecute(): se llama cuando finaliza el método doInBackground() y recibe el resultado para tratarlo y actualizar la interfaz de usuario en consecuencia.

Para todo aquellos que queráis indagar en el código de esta aplicación, podéis acudir a mi repositorio de GitHub aquí.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s