需要Android NDK NativeActivity内存管理吗?

时间:2014-05-25 00:02:07

标签: android c++ opengl-es android-ndk native-activity

我正在使用NativeActivty和native_app_glue为Android编写OpenGL游戏。很难确定何时是删除由OpenGL分配的堆分配对象和对象的最佳时间。

在NDK的NativeActivity示例中,他们似乎不会在完成对象后删除对象。现在我用两个删除函数删除我的对象:一个用于OpenGL个对象和一个常规对象。我将它们分开,因为似乎只有事件处理线程才能删除OpenGL个对象。我分配的常规对象将被普通删除功能删除。

当用户按下后退按钮并返回应用程序时,OpenGL资源将被删除,应用程序崩溃(尽管我认为应该由APP_CMD_INIT_WINDOW重新分配)。这让我想知道我是否应该删除对象,因为看起来我不应该删除OpenGL个对象。

我们是否应该使用NDK删除堆分配的对象。我知道NDK应用程序仍然是沙箱并且有一个JVM进程,这是否需要内存管理?

编辑: 我的应用程序崩溃的另一个实例是当游戏状态完成时删除对象。例如,从实际游戏到菜单。在返回游戏时,即使重新分配对象,应用程序也会崩溃。它似乎只工作一次。

1 个答案:

答案 0 :(得分:1)

事实证明,应用程序崩溃绝不是由于删除了堆分配的对象或OpenGL对象。一些被删除但仍包含在向量中的指针是导致问题的原因。但是,使用NDK删除对象似乎没有任何问题。