El gran libro de programación avanzada con Android. José Enrique Amaro Soriano

Чтение книги онлайн.

Читать онлайн книгу El gran libro de programación avanzada con Android - José Enrique Amaro Soriano страница 9

El gran libro de programación avanzada con Android - José Enrique Amaro Soriano El gran libro de

Скачать книгу

AsyncTask permite realizar tareas en background y publicar los resultados en la interfaz de usuario sin necesidad de crear hilos y sincronizarlos con la UI. Para utilizarla hay que definir una subclase, que toma tres parámetros genéricos (ver Apéndice B, secciones B.3 y B.4 sobre el uso de genéricos en Java).

      Aquí, X, Y, Z son tres nombres de clases utilizados para los datos del input, progreso y resultado, respectivamente. La clase anterior debe sobrescribir necesariamente el método doInBackground, que admite un número variable de parámetros de tipo X y devuelve un dato de tipo Z (ver Apéndice B, en el que se discuten los métodos de Java con un número variable de parámetros).

      El método doInBackground se ejecuta en un nuevo hilo. Desde este hilo se pueden publicar actualizaciones en el hilo principal llamando al método publishProgress(Y … progreso). Entonces, el hilo principal se encarga de invocar el método onProgressUpdate(Y … progreso). Al finalizar la ejecución del proceso en background, el hilo principal invoca el método onPostExecute(Z resultado).

      En el siguiente ejemplo se ilustra el uso de AsyncTask, donde un contador se incrementa desde 0 hasta 99 y en cada paso mostramos su valor en un objeto TextView en la pantalla, aumentando proporcionalmente su tamaño. Al final de la ejecución se añade el texto «Fin», como se muestra en la figura 4.5.

      Figura 4.5. Uso de AsyncTask para ejecutar un proceso en background y publicar su progreso en el hilo principal.

      El siguiente ejemplo es una aplicación práctica de AsyncTask para ejecutar varios hilos simultáneamente. Se trata de un juego que simula una máquina tragaperras. La actividad slotMachine consiste en tres columnas de imágenes que van permutando simulando la rotación de imágenes en cada uno de los tres rodillos de una máquina tragaperras. Cada columna se pone en marcha o se para independientemente por medio un botón que, al ser pulsado, cambia el valor de la variable de control continuar[columna]. Si esta es true, ejecuta un nuevo proceso AsyncTask para mostrar las imágenes en movimiento. Si es false, el proceso AsyncTask se detiene automáticamente. La clase AsyncTask definida más abajo requiere como parámetro de entrada el número de columna. Cada vez que se ejecuta onPostExecute, se determina si los tres procesos se han detenido, en cuyo caso comprueba si las imágenes de la segunda fila coinciden. En caso afirmativo, se escribe el mensaje «¡¡¡PREMIO!!!» en la pantalla.

      Además, se han añadido tres botones que permiten controlar la velocidad del movimiento de las imágenes, incrementando o disminuyendo el valor de la variable dificultad, que no es más que el tiempo, en microsegundos, que cada imagen se muestra en pantalla.

      El layout de esta aplicación consiste en una tabla con tres columnas. Previamente se han copiado las nueve imágenes jpg (de tragaperras1.jpg a tragaperras9.jpg) en el directorio de recursos res/drawable-hdpi de nuestra aplicación. Las imágenes son cuadradas con 250 píxeles de lado.

      El fichero main. xml es el siguiente:

      A continuación se detalla el fichero TragaPerras.java. La secuencia de las nueve imágenes, que se ha almacenado en la matriz secuencia[3][9], es diferente en cada columna. En la figura 4.6. se muestran las capturas de pantalla de la máquina tragaperras en funcionamiento.

      Figura 4.6. Juego de la máquina tragaperras usando AsyncTask.

      Конец ознакомительного фрагмента.

      Текст предоставлен ООО «ЛитРес».

      Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.

      Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDov L25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENl aGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4 OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6 NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5 OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht bG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0i aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1w PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9 InhtcC5kaWQ6QzA3RDVBRUYxQTIwNjgxMUFCMDg5N0U4MTAwM0U1OUQiIHhtcE1NOkRvY3VtZW50 SUQ9InhtcC5kaWQ6NzYzNz

Скачать книгу