¿Qué es el UiThread de Android (subproceso de interfaz de usuario)
¿Puede alguien explicarme qué es exactamente el hilo de la interfaz de usuario? En developer.android.com dice sobre la función runOnUiThread
Public final void runOnUiThread (acción Runnable)
- Android: ¿Posible que el hilo de fondo bloquee hasta que el hilo de UI finalice la operación?
- Android, creando un hilo sencillo que actualizará mi contador de segundos
- Diferencia entre Handler.post (Runnable r) y Activity.runOnUiThread (Runnable r)
- ¿Es apropiado SQL o acceso general a archivos en el hilo principal de la interfaz de usuario de Android?
- ¿Qué sucede con un AsyncTask cuando la actividad de lanzamiento se detiene / destruye mientras todavía se está ejecutando?
Desde: Nivel de API 1 Ejecuta la acción especificada en el subproceso de interfaz de usuario. Si el subproceso actual es el subproceso de UI, la acción se ejecuta inmediatamente. Si el subproceso actual no es el subproceso de UI, la acción se contabiliza en la cola de sucesos del subproceso de UI.
¿El hilo de interfaz de usuario significa que esto se ejecutará cada vez que la actividad se empuja el fondo por alguna actividad ui como la llamada entrante o pantalla de oscurecimiento, etc? Si no, ¿qué incluye exactamente el hilo de interfaz de usuario?
Gracias
- No se muestra la vista de Android después del método addView
- Android - SQLite ContentResolver insertar / eliminar / actualizar en UI Thread?
- ¿OnPreExecute () y onPostExecute () se ejecutan en el subproceso de interfaz de usuario o en el subproceso desde el que se inició AsyncTask?
- Configuración de TextView visible desde otro hilo o BeginInvoke en Android
- Cómo utilizar runOnUiThread
- IU de Android: ¿cuándo puedo modificar directamente una vista?
- ¿Cómo ejecutar algún código en el asíncrono de la interfaz de usuario de Android?
- Cómo saber si este hilo es un hilo de interfaz de usuario
El UIThread es el hilo principal de ejecución de su aplicación. Aquí es donde se ejecuta la mayor parte de su código de aplicación. En este subproceso se crean todos los componentes de la aplicación (Actividades, Servicios, Proveedores de contenido, BroadcastReceivers) y se realizan en este subproceso llamadas de sistema a esos componentes.
Por ejemplo, supongamos que su aplicación es una sola clase de actividad. A continuación, todos los métodos de ciclo de vida y la mayoría de su código de manejo de eventos se ejecutan en este UIThread. Estos son métodos como onCreate
, onPause
, onDestroy
, onClick
, etc. Además, es donde se realizan todas las actualizaciones de la interfaz de usuario. Todo lo que hace que la interfaz de usuario se actualice o cambie tiene que suceder en el subproceso de interfaz de usuario.
Para obtener más información sobre los Procesos y Hilos de su aplicación, haga clic aquí.
Cuando explícitamente generar un nuevo hilo para hacer el trabajo en segundo plano, este código no se ejecuta en el UIThread. Entonces, ¿qué pasa si este hilo de fondo necesita hacer algo que cambie la interfaz de usuario? Esto es para lo que runOnUiThread
. En realidad se supone que debe usar un manejador (vea el enlace a continuación para 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 poniendo el código modificando UI en un objeto Runnable y pasándolo al método runOnUiThread.
Para más información sobre los hilos de trabajo de desove y la actualización de la interfaz de usuario de ellos haga clic aquí
Personalmente, sólo uso el método runOnUiThread
en mis pruebas de instrumentación. Dado que el código de prueba no se ejecuta en el UIThread, debe utilizar este método para ejecutar código que modifique la interfaz de usuario. Por lo tanto, lo uso para inyectar clics y eventos clave en mi aplicación. Puedo entonces comprobar el estado de la aplicación para cerciorarse de las cosas correctas sucedidas.
Para más información sobre pruebas y ejecución de código en la UIThread haga clic aquí
Si ejecuta código de bloqueo (por ejemplo, una solicitud Http) en un hilo independiente, considere el uso de AsyncTask . Su doInBackground
-Method se ejecuta en un Thread independiente. AsyncTask
proporciona métodos onProgressUpdate
y onPostExecute
que están garantizados para ejecutarse en el subproceso de UI .
Si necesita actualizaciones de progreso GUI (por ejemplo, a través de una publishProgress
progreso), llame a publishProgress
dentro de doInBackground
. Esto lleva a una llamada posterior de onPublishProgress
.
onPostExecute
se llama automáticamente después de doInBackground
devuelve.
Todos los dibujos de UI, etc., ocurren en un hilo separado. Su llamado el UIThread. Si desea realizar cualquier cambio en la UI u debe utilizar asegúrese de que sucede en el contexto de UIThread. La manera más fácil de hacerlo es hacer uso de runOnUiThread
- ¿Cómo comprobar si una intención puede ser manejada de alguna actividad?
- ¿Cómo se relaciona la versión Java de Android con una versión de Java SE?