¿Podría alguien explicarme por qué solo el hilo de la interfaz de usuario en Android puede actualizar la interfaz de usuario? ¿Por qué no puede ningún otro subproceso actualizar la interfaz de usuario?¿Por qué solo la hebra de la IU en Android actualiza la IU?
Respuesta
Documentation estados que Android UI Toolkit es no thread-safe. Por lo tanto, el modelo de subproceso único asegura que la interfaz de usuario no se modifique mediante diferentes subprocesos al mismo tiempo.
Como se indica en la guía android developper sobre Tema:
Cuando su aplicación lleva a cabo una intensa labor en respuesta a la interacción del usuario, este modelo solo hilo puede producir malos resultados a menos que implemente la aplicación correctamente. Específicamente, si todo está sucediendo en el hilo de la interfaz de usuario, la realización de operaciones largas como el acceso a la red o las consultas a la base de datos bloquearán toda la interfaz de usuario. Cuando el hilo está bloqueado, no se pueden enviar eventos, incluidos los eventos de dibujo. Desde la perspectiva del usuario, la aplicación parece bloquearse. Peor aún, si el hilo de la interfaz de usuario está bloqueado durante más de unos pocos segundos (unos 5 segundos en la actualidad), se le presenta al usuario el infame diálogo de "aplicación que no responde" (ANR). El usuario puede decidir abandonar su aplicación y desinstalarla si no está contento.
Además, el kit de herramientas de interfaz de usuario Andoid no es seguro para subprocesos. Por lo tanto, debe no manipular su UI desde una cadena de trabajo: debe hacer toda la manipulación a su interfaz de usuario desde el subproceso de interfaz de usuario. Por lo tanto, hay son simplemente dos reglas a un modelo único hilo de Android:
No bloquee el hilo de interfaz de usuario no acceda al kit de herramientas de Android interfaz de usuario de fuera del hilo de interfaz de usuario
- 1. bibliotecas de la IU de Java ME
- 2. ¿Por qué se usa XML para la creación de diseños de IU en Android?
- 3. Acceso a la IU desde JavaScript en Android
- 4. Primero, el código: ¿la API api influye en la IU?
- 5. iOS IU elementos porting en Android
- 6. Android - Elementos de IU que se apagan
- 7. Separación de la IU y la lógica en C#
- 8. ¿Qué usa para probar la unidad de su IU web?
- 9. Instrumentación de una IU
- 10. encargo androide EditarTexto IU
- 11. Diseño de IU de dos pasadas: ¿Por qué?
- 12. Pestañas de la IU de Jquery con la misma altura
- 13. ¿Cómo funciona #import en la Automatización de IU de iOS?
- 14. IU de Elasticsearch
- 15. Actualizar la IU mientras se trabaja en el fondo
- 16. consejos para rastrear la IU de iOS de forma intermitente
- 17. Obtención de componentes de la IU Flash en el Creador
- 18. Obtención del despachador de IU en la biblioteca de clases
- 19. La pestaña IU de Jquery no funciona en AngularJS
- 20. Recursos y guías para la virtualización de IU en WPF
- 21. Cambiar el color de la IU en Eclipse
- 22. Desarrollo de la IU en JavaScript utilizando los principios TDD
- 23. Ejecutando la prueba de IU codificada de forma remota
- 24. Actualizar la IU desde múltiples hilos de trabajo (.NET)
- 25. Las propiedades de la IU no contienen algunas claves
- 26. Mejor enfoque para la prueba de IU de QT
- 27. Seleccione el primer resultado de la IU de jquery automáticamente
- 28. Dónde encontrar ejemplos de IU
- 29. ¿Cómo mantener el código detrás de la IU organizada?
- 30. ¿Cómo acceder a la IU de actividad de mi clase?
Esa es la forma en que casi todos los marcos de UI que he visto funcionan ... –
ver: http://stackoverflow.com/questions/5544447/why-are-most-ui-frameworks-single-threaded – Boann