2011-07-02 9 views
5

La pregunta es: ¿debo llamar al Activity.findViewById solo en el hilo de UI?¿Debería llamarse findviewbyid en el hilo de UI?

La razón por la que estoy preguntando es que la llamo desde un hilo arbitrario y funciona sin problemas. Pero luego recibí una excepción de uno de los usuarios: findViewById falla con NPE en algún lugar en findViewTraversal.

Entonces, ¿puede ser la causa?

+1

Si la interfaz de usuario cambia o se destruye, el hilo tendrá un error. Solo debe usar las funciones de IU como esta desde la UI thread – Spidy

Respuesta

5

el kit de herramientas de la interfaz de usuario de Android no es seguro para subprocesos y siempre se debe manipular en el subproceso de la interfaz de usuario.

Tomado de Painless threading.

Como no es seguro para subprocesos, no sabe qué sucederá si usa la API en otro subproceso. Podría funcionar, podría no funcionar, podría funcionar la mayor parte del tiempo, podría no funcionar o podría funcionar y romper otras cosas. No puedes decir.

Por lo tanto, si desea una aplicación correcta, debe hacer esto en el hilo de la interfaz de usuario.

+0

Gracias, moverlo en UI thread parece ser lo correcto. – Andy

Cuestiones relacionadas