UIThread es el hilo principal de ejecución de su aplicación. Aquí es donde se ejecuta la mayor parte del código de su aplicación. Todos los componentes de su aplicación (Actividades, Servicios, ContentProviders, BroadcastReceivers) se crean en este hilo, y cualquier llamada del sistema a esos componentes se realiza en este hilo.
Por ejemplo, digamos que su aplicación es una sola clase de actividad. Luego, todos los métodos del ciclo de vida y la mayor parte del código de manejo de eventos se ejecutan en este UIThread. Estos son métodos como onCreate
, onPause
, onDestroy
, onClick
, etc. Además, aquí es donde todos los cambios a la interfaz de usuario están hechos. Cualquier cosa que haga que la IU se actualice o cambie TIENE que suceder en el hilo de la IU.
Para obtener más información sobre los procesos y subprocesos de su aplicación, haga clic aquí.
Cuando generas explícitamente un nuevo hilo para trabajar en segundo plano, este código no se ejecuta en UIThread. Entonces, ¿qué sucede si este hilo en segundo plano necesita hacer algo que cambie la interfaz de usuario? Para esto es runOnUiThread
. En realidad, se supone que debe usar un controlador (consulte el enlace a continuación para obtener más información sobre esto). Proporciona a estos subprocesos de fondo la capacidad de ejecutar código que puede modificar la interfaz de usuario. Lo hacen colocando el código de modificación de la interfaz de usuario en un objeto Runnable y pasándolo al método runOnUiThread.
Para obtener más información sobre cómo generar hilos de trabajo y actualizar la interfaz de usuario desde ellos, haga clic aquí
Yo personalmente solo uso el runOnUiThread
método en mis Pruebas de Instrumentación. Dado que el código de prueba no se ejecuta en UIThread, debe utilizar este método para ejecutar código que modifica la interfaz de usuario. Entonces, lo uso para inyectar clics y eventos clave en mi aplicación. Luego puedo verificar el estado de la aplicación para asegurarme de que sucedieron las cosas correctas.
Para obtener más información sobre cómo probar y ejecutar código en UIThread, haga clic aquí