Android 使用UDP更新要渲染的对象列表

Android 使用UDP更新要渲染的对象列表,android,multithreading,opengl-es,udp,Android,Multithreading,Opengl Es,Udp,我需要编写一个Android应用程序,它可以接收UDP数据包,并使用OpenGL在屏幕上为每个数据包显示一个新对象 我尝试了以下方法: 我的OpenGL渲染器类有一个每帧渲染的对象的ArrayList,我创建了一个函数,在调用时将新对象添加到此列表中 在我的主要活动中,我创建了一个新线程来处理传入的UDP数据包。每次收到新数据包时,都会向处理程序发送一条消息,该处理程序调用将新对象添加到列表中的函数 首先,当收到数据包时,会显示对象,但如果我按BACK并立即重新启动应用程序,即使接收到数据包,也

我需要编写一个Android应用程序,它可以接收UDP数据包,并使用OpenGL在屏幕上为每个数据包显示一个新对象

我尝试了以下方法: 我的OpenGL渲染器类有一个每帧渲染的对象的ArrayList,我创建了一个函数,在调用时将新对象添加到此列表中

在我的主要活动中,我创建了一个新线程来处理传入的UDP数据包。每次收到新数据包时,都会向处理程序发送一条消息,该处理程序调用将新对象添加到列表中的函数

首先,当收到数据包时,会显示对象,但如果我按BACK并立即重新启动应用程序,即使接收到数据包,也不会再显示新对象(我可以通过日志判断)


这是正确的方法,但我遗漏了一些东西,还是有更好的方法来达到预期的结果?

我设法解决了这个问题。我不得不将对象列表声明为静态的,我不太清楚为什么。似乎在活动被销毁并重新启动后,“add”函数修改的列表和呈现的对象列表之间出现了一些混淆

如果有人能解释一下发生了什么就好了。
谢谢

我找到了导致问题的原因。网络线程就是问题所在。它将在应用程序关闭后继续运行,因此将更新错误的列表。调用onDestroy()时,我必须使线程停止


为了解决这个问题,我添加了一些“停止”标志来中断while(true)循环,但这仍然不能很好地工作,所以技巧是关闭等待数据的套接字(s.receive()).

我怀疑这与OpenGL有任何直接关系-这听起来更像是与您对活动生命周期的处理或发送更新的线程有关。