Tu canal de Roku se congela unos segundos al cargar datos: el mando deja de responder mientras llega la respuesta de red. ¿Qué está mal y cómo lo arreglas?
Contexto
Un canal SceneGraph que hace la petición de red en el mismo hilo que renderiza la interfaz. Mientras espera, la UI se bloquea y el usuario no puede navegar. El equipo trabaja con BrightScript y SceneGraph.
Respuesta modelo
En SceneGraph el hilo de render nunca debe bloquearse con trabajo pesado. 1) Mover la red y el procesamiento a un nodo Task, que corre en su propio hilo, en vez de hacerlo en el hilo de la interfaz. 2) La UI y el Task se comunican solo a través de campos observables: el Task escribe el resultado en un field y la UI observa ese campo con observeField para reaccionar cuando llega. 3) Nunca manipular el árbol de nodos de la UI directamente desde el hilo del Task; el Task publica datos, y el hilo de render actualiza la vista. 4) Mostrar un indicador de carga mientras el Task trabaja. 5) Cancelar o ignorar resultados obsoletos si el usuario ya navegó a otra pantalla. El principio: el render thread siempre libre; el trabajo pesado vive en Tasks.
Claves
- La red va en un nodo Task, nunca en el hilo de render.
- UI y Task se comunican por campos observables (observeField).
- El Task no toca el árbol de nodos; publica datos que la UI observa.