我有一个Java Applet来显示图像。我在paint()中有一个真正的循环,以便通过tcp / ip socket永久地接收新图像。现在我遇到了问题,即使关闭选项卡,应用程序仍在从服务器请求新映像。我该如何解决这个问题?
答案 0 :(得分:1)
只是说清楚:
我在
while(true)
中有一个paint()
循环,以便通过tcp / ip socket永久接收新图像。
不要这样做。油漆方法永远不应该阻止更长的时间框架。它应仅绘制您的图像,没有别的。 (只要paint方法正在运行,GUI中的任何其他内容都无法执行任何操作。这对于您的applet可能并不重要,但它适用于更复杂的程序。)
如果您需要加载新图像,请在单独的线程中执行此操作,将图像放在变量中,然后在末尾调用repaint()
。然后,绘制方法从变量中获取图像并将其绘制到屏幕上。
答案 1 :(得分:0)
<script>
function closeIt()
{
document.<appletContainer>.APPLETID.loaded = 0;
}
window.onbeforeunload = closeIt;
window.onunload = closeIt;
</script>
并将public int loaded = 1;
添加到您的applet代码
现在,在applet中执行代码之前检查加载变量的值。
答案 2 :(得分:0)
由浏览器或applet查看器调用以通知此applet正在回收它并且它应该销毁它已分配的任何资源。 ..