我有一些关于原生Adroid应用的新手问题。应用程序暂停时我应该释放OpenGL资源吗?
例如,在我的基于QT OpenGLUnderQML sample的应用程序中,QQuickWindow :: sceneGraphInvalidated永远不会在Android上调用,并且该应用程序在暂停并且工作正常时不会释放OpenGL资源。
答案 0 :(得分:0)
释放资源的好处是,当设备处于内存压力时,您的应用程序不太可能被弹出。你也是一个更好的公民,如果每个人都在后台释放他们的资源,那么更多的应用程序可以在后台立即保持活力。
缺点是代码很麻烦,当用户返回您的应用时,您将不得不进行加载,这将需要一些时间并且会导致稍差的用户体验。
没有要求释放资源的权利,在我所参与的游戏中,我一般都不担心。我偶尔会处理一些悬而未决的问题,比如释放渲染目标或清除由缓存系统管理的低优先级纹理。它可能永远不会超过OpenGL内存占用量的10-20%,但我想这意味着内存很少的用户更有可能发现我的应用程序仍在运行,如果他们多任务片刻检查他们的电子邮件或其他什么。