在NDK应用程序事件生命周期的哪个阶段,我应该释放所有OpenGLES资源吗?
这主要包括OpenGLES VBO和纹理。
详情:
我在APP_CMD_PAUSE
或APP_CMD_TERM_WINDOW
中发布。
我正在注销每个以下的应用事件,以确保我顺利退出并且这样做我似乎缺少APP_CMD_STOP
。我似乎也没有顺利退出looper和app。
我没有任何明显的副作用,但是在我看来应用程序已正确关闭,但是当我尽早释放资源时,应用程序生命周期的最后阶段没有被注销。我担心这意味着应用程序没有顺利关闭。
对此的一些澄清将受到欢迎。
答案 0 :(得分:0)
无法释放资源不应该阻止您看到APP_CMD_STOP。如果你只是注释掉发布代码,你会得到命令吗?
您应该在APP_CMD_TERM_WINDOW中释放窗口EGLSurface,并在获得APP_CMD_INIT_WINDOW时重新创建它。不要忘记两个地方的eglMakeCurrent调用。
当您在后台时,您可以保留EGLContext和所有GL对象/数据,以便在用户很快返回您的应用程序时可以快速恢复。如果你得到APP_CMD_LOW_MEMORY或者在退出期间(android_app :: destroyRequested == 1)你应该释放它们。