原生Android应用程序在挂起时是否应该释放OpenGL资源?

问题描述:

我有一个有关原生Adroid应用程序的新手问题。我应该在应用程序被暂停时释放OpenGL资源吗?原生Android应用程序在挂起时是否应该释放OpenGL资源?

例如,在我的基于QT OpenGLUnderQML sample的应用程序中,QQuickWindow :: sceneGraphInvalidated从不会在Android上调用,并且该应用程序在挂起时无法释放OpenGL资源并且工作正常。

释放资源的好处是,当设备处于内存压力下时,您的应用不太可能被弹出。另外,如果每个人都在后台释放资源,那么你就是一个更好的公民,那么更多的应用程序可以在后台保持活跃状态​​。

缺点是编码很麻烦,而且当用户返回到应用程序时,您将不得不进行加载,这需要一段时间,并且会导致用户体验略差。

没有免费资源的要求,我一般不会在我所从事的游戏中担心太多。我偶尔会处理一些低下的事情,例如释放渲染目标或清除由缓存系统管理的低优先级纹理。它可能永远不会超过OpenGL内存占用量的10-20%,但我想这意味着一个内存很小的用户更容易发现我的应用程序仍在运行,如果他们多任务检查他们的电子邮件或其他东西。

+0

很好的答案,另一个问题是为什么QQuickWindow :: sceneGraphInvalidated在桌面上被调用,但不在Android上调用? – Dmitriano