Pregunta

Necesito escribir una aplicación Android que pueda recibir paquetes UDP y, para cada uno de ellos, mostrar un nuevo objeto en la pantalla con OpenGL.

He intentado lo siguiente: mi clase de renderizador OpenGL tiene una lista de objetos que se renderizan cada cuadro y creé una función que agrega nuevos objetos a esta lista cuando se llama.

En mi actividad principal, he creado un nuevo hilo para tratar los paquetes UDP entrantes. Cada vez que se recibe un nuevo paquete, se envía un mensaje al controlador que llama a la función que agrega un nuevo objeto a la lista.

Esto funciona al principio, cuando se recibe el paquete, se muestra el objeto, pero si presiono hacia atrás e inicio la aplicación nuevamente de inmediato, los nuevos objetos ya no se muestran a pesar de que los paquetes se reciben (puedo decir a través del registro ).

¿Es este el camino correcto, pero me falta algo o hay una mejor manera de lograr el resultado esperado?

¿Fue útil?

Solución 2

Encontré lo que estaba causando el problema. El hilo de la red era el problema. Continuaría ejecutándose después de que se cerrara la aplicación y, por lo tanto, actualizaría la lista incorrecta. Tuve que hacer que el hilo se detuviera cuando se llamaba al Ondestroy ().

Para solucionarlo, agregué algunas banderas de "parar" para romper el bucle While (verdadero), pero eso aún no funcionaría bien, por lo que el truco era cerrar el enchufe que estaba esperando datos (S.Receive ()).

Otros consejos

Logré solucionar el problema. Tuve que declarar la lista de objetos como estáticos, no estoy tan seguro de por qué. Parece que después de que la actividad fue destruida y reiniciada, hubo cierta confusión entre la lista modificada por la función "Agregar" y la lista de objetos que se representan.

Sería bueno si alguien pudiera explicar lo que estaba pasando. ¡Gracias!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top