【发布时间】:2012-07-31 23:40:04
【问题描述】:
几天前,我开始制作我的第一个 Android 游戏。我选择使用 OpenGL ES 2.0,因为它是最熟悉的替代方案。但是,我目前无法在真实设备上测试游戏,所以我决定改用 AVD,使用安装了 Intel HAXM 的 4.0.3 虚拟设备。这似乎工作得很好,但我现在遇到了一个非常奇怪的问题。
从 Eclipse 编译和运行游戏时,它运行良好。但是,如果我再次运行游戏,无论是通过 AVD 还是从 Eclipse,除了背景颜色之外什么都没有绘制。如果我更改代码中的任何内容以使 Eclipse 必须重新编译应用程序,那么一切都会再次正常运行,但仅在第一次运行期间。
我不知道发生了什么。如果我不得不猜测,我会说 AVD 以某种方式出现了问题,但有人知道解决这个问题的方法吗?如果需要,我会提供相关的源代码,但由于我不知道是什么导致了这种问题,所以我现在无法提供。
【问题讨论】:
-
重启模拟器能解决吗?是否清除数据(无需重新安装)?
-
否,重新创建 AVD 也不能解决问题。然而,我发现重新安装应用程序,就像 Eclipse 在重新编译时所做的那样,是让它在单次运行时工作的原因。
-
这很奇怪。我会说这听起来像某些资源没有被正确释放,但因为它仍然会在你停止模拟器并重新启动它之后发生,所以情况可能并非如此。我想说下一步是清除整个模拟器上的数据,但这会卸载您的应用程序,然后重新安装它似乎可以修复它......您可以发布您的应用程序中的任何清理代码吗?跨度>
-
这有点尴尬,但这其实也是我第一次使用Java。我的印象是它自己负责所有垃圾收集。但是,我想我还没有实现 glDelete* 调用,因为 Java 没有析构函数,而且我的程序结构仍然有点模糊。这可能是导致问题的原因吗?不过,我觉得这在两次运行之间如何持续存在有点奇怪。
-
它可能是,虽然像你一样,我觉得很奇怪,它会在重新启动后持续存在。但是,在您尝试之前无法知道。 :) 话虽如此,本机库在 Java 中没有 GC。只有纯本机 Java 的东西,或者设计用于 Java 垃圾收集的东西。
标签: android eclipse opengl-es-2.0 avd