¿Cuál es la diferencia entre un hilo de interfaz de usuario y un hilo principal en Android?

UI Thread y Main Thread son iguales solo en Android .

El hilo principal , que se encarga de manejar los eventos de la interfaz de usuario como Draw, Listen y recibir los eventos de la interfaz de usuario .

Ans también es responsable de interactuar con los componentes en ejecución del kit de herramientas de la interfaz de usuario para la aplicación correspondiente a la que pertenece.

Cuando se produce un evento de usuario en la aplicación, el hilo principal *

necesita agregar el evento en la cola -> íntimo sobre el evento a la Vista apropiada -> cambiar el estado de la vista -> volver a dibujar la vista de acuerdo con los cambios de estado -> esperando la respuesta para la acción del evento particular -> después de intimar y la acción de evento completada debe eliminar el evento en la cola.

* *

Todas las acciones anteriores son manejadas por el subproceso principal (no solo la operación anterior, es una de las operaciones manejadas por el subproceso de interfaz de usuario ), por lo que si nuestra aplicación no responde el evento, aproximadamente 5 segundos, Android mostrará el error “no respondiendo “ .

Por lo tanto, solo se sugiere hacer los procesos de luz en el hilo de la interfaz de usuario .

Espero que esta respuesta sea algo detallada y útil para las nuevas abejas Android como yo. Acabo de compartir lo que aprendí sobre UI Thread. Si me equivoqué en alguna parte, no dude en registrarme.

Para obtener más información, vea este video de Udacity:

Cuando se hace clic en el icono de una aplicación para iniciarlo, el sistema inicia un nuevo proceso y ejecuta la actividad principal en un nuevo hilo si la aplicación aún no se ha iniciado. Todas las interacciones posteriores del usuario con la aplicación y los componentes manejan las interacciones que se ejecutan en el mismo hilo. Este hilo se llama hilo principal.

Si una aplicación ya se está ejecutando en un subproceso y se solicita un componente, el componente se ejecutará en el subproceso existente para la aplicación.

Se puede crear un hilo de fondo o de trabajo dentro de la aplicación para ejecutar tareas de larga duración.

El subproceso principal también se denomina subproceso de interfaz de usuario, ya que todos los componentes de la interfaz de usuario se ejecutan en el subproceso principal. Pero en las aplicaciones del sistema, el hilo de la interfaz de usuario puede ser diferente del hilo principal si las vistas se ejecutan en hilos diferentes.

En Android, el hilo principal y el hilo de la IU son uno y el mismo. Puedes usarlos indistintamente.

En Android, cada aplicación obtiene un proceso dedicado para ejecutarse. Por lo tanto, el proceso tendrá un hilo principal. El subproceso principal es también el subproceso que toma de la representación de la interfaz de usuario. Es por eso que si desea realizar una tarea intensiva de recursos que demore más de 5 segundos, debe hacerlo en el subproceso principal / UI, ya que conducirá a la ventana emergente de diálogo Aplicación sin respuesta (ANR). Por lo tanto, los desarrolladores generan un hilo desde la interfaz de usuario / hilo principal asegurándose de que ANR nunca ocurra.

Puedes encontrar un poco más sobre esto en este video.

A veces parece lo mismo de la documentación oficial … Procesos y subprocesos

Pero a veces se menciona lo mismo. .

Subproceso principal: el primer subproceso que se inicia al iniciar una aplicación

UIThread : comienza desde el hilo principal para representar la interfaz de usuario

Podemos llamar a los métodos UIThread desde los métodos de subprocesos principales y viceversa.

Pero para el subproceso de interfaz de usuario, diferente del subproceso principal en el caso de aplicaciones del sistema con múltiples vistas en diferentes subprocesos

Para una explicación detallada: ver aquí

El subproceso de interfaz de usuario es lo que representa el componente / vistas de la interfaz de usuario. El hilo principal es lo que inicia el proceso / aplicación. En Android, el hilo de la IU es el hilo principal.