我需要编写一个可以接收UDP数据包的Android应用程序,并且对于其中的每个应用程序,请使用OpenGL在屏幕上显示一个新对象。

我尝试了以下操作:我的OpenGL渲染器类具有一个对象的数组列表,这些对象列表被渲染为每个帧,并且创建了一个函数,在调用时将新对象添加到此列表中。

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

首先,当收到数据包时,显示对象,但是如果我立即按下并立即启动应用程序,即使收到数据包,也不会再显示新对象(我可以通过日志来告诉)。

这是正确的方法,但我缺少某些东西,还是有更好的方法来达到预期的结果?

有帮助吗?

解决方案 2

我找到了导致问题的原因。网络线程是问题。它将在关闭应用程序后继续运行,因此会更新错误的列表。当打电话给ondestroy()时,我不得不将线程停止。

为了修复它,我添加了一些“停止”标志来打破(true)循环,但这仍然无法正常工作,因此诀窍是关闭正在等待数据的插座(s.receive())。

其他提示

我设法解决了这个问题。我必须将对象列表声明为静态,我不确定为什么。似乎在活动被破坏和重新启动之后,列表被“添加”函数修改的列表与正在渲染的对象列表之间存在一些混乱。

如果有人能解释发生了什么,那就太好了。谢谢!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top