2010-07-16 30 views
52

El documento de Android dice "Al igual que las actividades y los otros componentes, los servicios se ejecutan en el hilo principal del proceso de la aplicación".¿El hilo principal es igual que el hilo de la interfaz de usuario?

es el hilo principal aquí lo mismo que el hilo de interfaz de usuario?

+2

Contrariamente a la afirmación en la respuesta aceptada (y la documentación referenciada), en algunos casos, los hilos principales y UI pueden no ser los mismos. La respuesta completa está disponible aquí: http://stackoverflow.com/a/40795895/2463035 – Vasiliy

Respuesta

61

Parece que sí. Citado de http://android-developers.blogspot.com/2009/05/painless-threading.html: "Cuando se lanza una aplicación, el sistema crea un hilo llamado" principal "para la aplicación. El hilo principal, también llamado hilo de la interfaz de usuario ...", documento oficial API.

+9

Nota: Esto solo es cierto en Android. En otras aplicaciones Java, su hilo "principal" NO es específicamente el hilo de la interfaz de usuario y, en teoría, ni siquiera debería crear su GUI en el hilo principal (casi todo el mundo lo hace y no creo que haya matado a nadie) –

+1

Android Lollipop ahora introduce nuevos RenderThread (s). – Simon

+2

Tenga en cuenta que esta respuesta no es completamente precisa (debido a la inexactitud en los documentos oficiales que cita). La respuesta completa a esta pregunta está disponible aquí: http://stackoverflow.com/a/40795895/2463035 – Vasiliy

9

El "subproceso principal de la aplicación" a veces se denomina "subproceso UI".

+0

me pueden sugerir por favor si mainthread es el hilo de UI y docs dice que los servicios se ejecutan en Tema principal: ¿por qué los servicios no bloquean el hilo de UI cómo funcionan los servicios? – Erum

+0

@Erum: "docs dice que los servicios se ejecutan en el hilo principal" - no, la documentación no. En la programación de Java, los objetos no se ejecutan en los hilos. Los métodos de ciclo de vida de un 'Servicio' (' onCreate() ',' onStartCommand() ',' onBind() ',' onDestroy() ') se invocan en el subproceso principal de la aplicación, y cualquier trabajo realizado desde esos métodos en el subproceso principal de la aplicación se bloqueará la interfaz de usuario para que no se actualice. Algunas clases, como 'IntentService', le proporcionan ese tipo de subprocesos; de lo contrario, se bifurca el suyo. – CommonsWare

+0

" subproceso principal de la aplicación "a veces se llama el" hilo de UI ". Por lo tanto, podría explicar cuáles son los casos en los que el hilo principal se llama hilo UI y en el que no –

3

Cada actividad tiene su propio hilo de interfaz de usuario. Tan pronto como arranca la VM, el Zygote inicia el Servidor del sistema. El Servidor del sistema inicia todos los demás servicios, como el Administrador de actividades, en nuevos hilos.

+0

No creo que esto sea * bastante * verdad: (a menos que quisieras decir "Aplicación" en lugar de "Actividad"): "El sistema no crea una secuencia separada para cada instancia de un componente". - ver http://developer.android.com/guide/components/processes-and-threads.html#Threads - por supuesto, puede solicitar que cada componente (Actividad, Servicio, etc.) tenga su propio proceso en el archivo de manifiesto, pero no está hecho de esa manera por defecto. –

17

IU Tema y Tema principal son los mismos sólo en Android.

El hilo principal, que es responsable de manejar los eventos de interfaz de usuario como Draw, escuchar y recibir los eventos de interfaz de usuario .

Ans también es responsable de interactuar con el funcionamiento de los componentes del conjunto de herramientas de interfaz de usuario para la aplicación correspondiente que pertenece.

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

necesidad de añadir el evento en la cola -> íntima sobre el evento a Ver apropiada -> cambiar el estado de la vista -> volver a dibujar la vista acuerdo con los cambios de estado -> a la espera de la respuesta de la acción acontecimiento particular -> después dio a entender y completó acción de eventos necesidad de eliminar el evento en la cola.

*

Lo anterior cada acciones son manejados por el hilo principal (No sólo la operación anterior, es una de las operaciones que maneja el hilo IU), Así que si nuestra aplicación no responde al evento unos 5 segundos voluntad androide muestra el error "no responde".

Por lo tanto, solo se recomienda ampliamente realizar los procesos de iluminación en el UI thread.

Esperanza esta respuesta es un tanto detalle y útiles a las nuevas abejas android como yo. Acabo de compartir lo que aprendí sobre UI Thread. Si me equivoqué en cualquier lugar, no dude en escribirme.

1

Sí. El hilo principal es el hilo UI.

Ver this tutorial para obtener más sobre el proceso de fondo en Android

3

Tema principal Básicamente es Rosca Ui.
Sin embargo, ¡a veces pueden ser diferentes pisadas!
Es posible para aplicaciones de sistema con múltiples vistas en diferentes subprocesos.
Además, si usa anotaciones de soporte, tenga en cuenta que tanto @MainThread como @UiThread están disponibles al mismo tiempo.
Aquí con la primera se anotan los métodos asociados con el ciclo de vida de la aplicación y con el segundo método que está a cargo de ver la jerarquía.
https://developer.android.com/studio/write/annotations.html

Cuestiones relacionadas