【发布时间】:2017-10-10 22:04:29
【问题描述】:
我有一个关于原生 Adroid 应用程序的新手问题。应用挂起时是否应该释放 OpenGL 资源?
例如,在我的基于QT OpenGLUnderQML sampleQQuickWindow::sceneGraphInvalidated 的应用程序中,Android 上从未调用过,并且该应用程序在挂起时不会释放 OpenGL 资源并且工作正常。
【问题讨论】:
我有一个关于原生 Adroid 应用程序的新手问题。应用挂起时是否应该释放 OpenGL 资源?
例如,在我的基于QT OpenGLUnderQML sampleQQuickWindow::sceneGraphInvalidated 的应用程序中,Android 上从未调用过,并且该应用程序在挂起时不会释放 OpenGL 资源并且工作正常。
【问题讨论】:
释放资源的好处是,当设备处于内存压力之下时,您的应用不太可能被弹出。此外,您正在成为一个更好的公民,如果每个人都在后台释放他们的资源,那么更多的应用程序可以同时在后台保持活跃。
缺点是编写代码很麻烦,当用户返回您的应用时,您将不得不加载,这需要一些时间,并且会导致用户体验稍差。
没有免费资源的要求,在我参与的游戏中,我通常不会太担心它。我偶尔会处理一些容易实现的目标,例如释放渲染目标或清除由缓存系统管理的低优先级纹理。它可能永远不会超过 10-20% 的 OpenGL 内存占用,但我想这意味着内存很少的用户更有可能发现我的应用程序仍在运行,如果他们多任务一会儿检查他们的电子邮件或其他东西.
【讨论】: