KnowledgeCity

Java para Android: tareas ejecutables y temporizadores

En esta sección, creará una aplicación que demuestre el uso de tareas en segundo plano.

En esta sección, creará una aplicación que demuestre el uso de tareas en segundo plano.  En un entorno multitarea, las tareas, o subprocesos, comparten recursos, incluido el acceso a la CPU y la memoria.  En Android, el hilo de la interfaz de usuario es responsable de escuchar los eventos de clic.  Es importante no poner tareas a largo plazo en este hilo que lo congelará durante más de unos pocos milisegundos.  Para cumplir con este requisito, Java proporciona un proceso Runnable y una clase Handler para realizar operaciones lentas en segundo plano.  Esta aplicación demostrará primero cómo no programar un proceso lento y luego cómo crear una tarea Runnable.

Objetivos de aprendizaje

  • Crear una aplicación que demuestre el uso de tareas en segundo plano.
  • Demostrar los peligros de ejecutar una tarea intensiva de CPU en el subproceso de la interfaz de usuario.
  • Crear un proceso Runnable para ejecutarse en segundo plano.
  • Crear una instancia de la clase Handler para programar tareas que se ejecutarán en el subproceso de la interfaz de usuario.

Instructor: Shad Sluiter

Duración: 20m · 6 lecciones
Nivel: Intermediate
Idioma: Español

Habilidades que obtendrás

Aplicaciones para AndroidAndroid DevelopmentInterfaz de usuario de AndroidAsyncTaskTarea en segundo planoMultihilo

Lo que aprenderás

  • Crear una aplicación de Android que demuestre el uso de tareas en segundo plano
  • Demostrar los peligros de ejecutar una tarea intensiva en CPU en el thread de UI
  • Crear un proceso Runnable para ejecutar trabajo en segundo plano
  • Crear una instancia de la clase Handler para programar tareas para ejecutarse en el thread de UI
  • Configurar una UI y un click listener para lanzar una tarea en segundo plano
  • Crear un proyecto en Android Studio para construir la aplicación de tarea en segundo plano

Puntos clave

  • En un entorno multitarea, las tareas (threads) comparten recursos incluyendo acceso a la CPU y memoria.
  • En Android, el thread de interfaz de usuario es responsable de escuchar eventos de clic.
  • Las tareas a largo plazo no deben colocarse en el thread de UI, ya que hacerlo puede congelarlo por más de unos pocos milisegundos.
  • Java proporciona un proceso Runnable y una clase Handler para realizar operaciones lentas en segundo plano.
  • La aplicación demuestra primero cómo no programar un proceso lento y luego cómo crear una tarea Runnable.

Preguntas frecuentes

¿Qué construiré en este curso?

Crearás una aplicación de Android que demuestre el uso de tareas en segundo plano, mostrando primero cómo no programar un proceso lento y luego cómo crear una tarea Runnable.

¿Por qué las tareas de ejecución larga no deben ejecutarse en el thread de UI?

En Android, el thread de interfaz de usuario es responsable de escuchar eventos de clic, y poner una tarea a largo plazo en él puede congelarlo por más de unos pocos milisegundos, por lo que el curso demuestra los peligros de ejecutar una tarea intensiva en CPU en el thread de UI.

¿Qué características de Java usa este curso para manejar trabajo en segundo plano?

Utiliza el proceso Runnable de Java para ejecutar operaciones lentas en segundo plano y la clase Handler para programar tareas para ejecutarse en el thread de UI.

¿Qué habilidades ganaré de este curso?

Ganarás habilidades en Android Applications, Android Development, Android UI, AsyncTask, Background Task y Multithreading.

¿Qué temas cubren las lecciones?

Las lecciones cubren Background Threads, configuración de la UI para una tarea en segundo plano, establecimiento de un click listener para lanzar una tarea en segundo plano, creación de un proyecto en Android Studio, creación de un thread en segundo plano y creación de un Handler para iniciar un thread en segundo plano.

Transcripción

Transcripción

Hola, en este video, vamos a hablar sobre cómo iniciar una tarea en segundo plano en su aplicación de Android. Ahora, en Java, una tarea ejecutable es una unidad de trabajo. Y entonces podemos asignar cosas como el nivel de prioridad del trabajo, y también podemos configurarlo para que se retrase para que pueda ejecutarse en el futuro. Entonces le damos una marca de tiempo. Entonces esto es lo que parece cuando crea una tarea ejecutable en Java. Dices, ejecutable, dale un nombre y luego conviértalo en una nueva clase ejecutable. Tiene un método dentro de él llamado ejecutar. Y entonces el propósito de una tarea ejecutable es para que puedas dividirlo en diferentes subprocesos. Ahora bien, un hilo es un proceso o un camino que atraviesa un proceso. Por lo tanto, el hilo principal suele ser en el que programamos, porque pensamos en un programa secuencial. Así que echemos un vistazo a un código de cómo se podría hacer esto. Entonces, lo que tengo frente a aquí es una muestra de un oyente de clics para un botón. Y entonces tenemos un clic en él. Ahora, lo que tenemos adentro es un poco diferente. Creé un nuevo hilo, y dentro de ese hilo, Creé lo que se llama una unidad de trabajo. Así que veremos eso en solo un segundo. Eso es realmente un proceso ejecutable. Y luego le decimos al hilo que comience. Entonces, lo que hará esto es que dirá: no toques el hilo principal donde estamos escuchando los clics del mouse. Empecemos con otro hilo. Probablemente esto tenga una prioridad más baja, y dejaremos que el proceso se ejecute allí. Entonces, quizás quieras decir, descarguemos un archivo. o consultemos una base de datos o dibujemos algo o rendericemos una imagen. Por lo tanto, es probable que el proceso tarde un poco. La mayor parte del tiempo no tenemos que preocuparnos por el tiempo que tarda algo porque los procesos son casi instantáneos. Pero en este caso, fingiendo que tenemos algo muy lento. Veamos el siguiente código. Así que así es como se ve la unidad de trabajo. Este es el proceso ejecutable. Entonces el proceso ejecutable va a tener un solo método llamado ejecutar. Y luego, en mi caso, vamos a codificar aquí, es que voy a simular algo eso lleva cinco segundos. Y aquí solo tengo la declaración de demora, o la declaración de sueño que dice, lo que sea que estés haciendo, detente, y no vayas más lejos durante 5.000 milisegundos. Ahora, cuando lleguemos a este final, Quiero que aparezca algo en la pantalla. Quiero que haga un brindis. Y para hacer un brindis tienes que poder ejecutar eso en el hilo principal. Y entonces tenemos que crear otro proceso ejecutable dentro de este ejecutable. Entonces, este ejecutable tiene un comando que es especial, es exclusivo de Android, dice que se ejecuta en el hilo de la interfaz de usuario. Entonces eso significa ir al hilo principal que manejaba todos los clics de los botones, y luego haz este proceso. Y puedes ver que un brindis es algo esa es la interfaz de usuario. Si esto fuera otra cosa, como imprimir en un archivo de registro o simplemente calcula una respuesta y devuélvela, entonces no tendrías que preocuparte por que se ejecuta en el subproceso de la interfaz de usuario. Pero si tiene que actualizar un campo de texto o cambiar el color de un botón o, en este caso, haz un brindis, estás tocando el hilo de la interfaz de usuario. Y es por eso que le decimos en qué hilo debe ejecutarse. Y entonces esta unidad de trabajo sería lo que pondríamos en el botón haga clic. Ahora, hay otra forma de manejar esto. En lugar de usar ejecutar en el hilo de la interfaz de usuario, la mayoría de los programadores usarían esto. Llamarían a un manejador. Así que recuerda, el manejador es como el brazo robótico. que recoge la tarea y la coloca en la cinta transportadora. Entonces el manejador dice: Voy a crear una nueva instancia del objeto controlador, y voy a especificar que esto es del Looper principal. Y luego aquí adentro puedes decirme que voy a publicar un nuevo objeto ejecutable en el bucle principal. Y así publicar un nuevo artículo. Y eso es como insertarlo en la cinta transportadora. en el piso de la fábrica. Y cuando publicas, puede asumir que se manejará de inmediato. Pero hay otros comandos, como POST con retraso. Y entonces puedes configurar un temporizador para decir, haz esto en cinco segundos, y luego esperará antes de que se ejecute realmente. Estos son algunos ejemplos de cómo se pueden realizar tareas y cómo los PUBLICA y cómo protege su bucle principal, su interfaz de usuario, para que no se bloquee. Así que codificaremos algo de esto, y veremos un ejemplo de cómo funciona.

Aprende sobre la marcha

Lleva tu aprendizaje a todas partes: la app de KnowledgeCity te permite ver las lecciones sobre la marcha.