1

我反复阅读过,在封闭活动的 onPause() 和 onResume() 方法期间,必须为 GLSurfaceview 调用 onPause() 和 onResume()。我认为这是停止并重新启动渲染线程以节省资源。但是,当我记录渲染线程的 onDraw 方法的每次迭代时,我看到当我按下主页或返回按钮时 onDraw 停止被调用,当我返回应用程序时,onSurfaceCreated 和 onSurfaceChanged 被调用,然后是 onDraw调用恢复 - 即使我在相应的活动方法中删除了对 GLSurfaceview 的 onPause() 和 onResume() 方法的调用。如果渲染线程没有被停止,我怎么看这种行为?即使不再调用 onDraw,渲染线程是否仍然存在?如果在activity失去焦点时渲染线程会自动关闭,那为什么还要调用GLSurfaceview版本的onPause()和onResume()呢?

4

1 回答 1

1

它似乎是一个错误GLSurfaceView,它试图通过容忍你忘记调用onResume()和来变得聪明onPause()。我不确定这是不是故意的。

忽略调用几乎总是有效的,但在某些情况下它可能会导致奇怪的行为和崩溃。我不确定这些情况是什么,但我已经将一些奇怪的崩溃追溯到丢失onResume()/onPause()呼叫。当你不调用它们时,状态机会稍微有点混乱GLSurfaceView——看起来在 100% 的情况下不会触发“自动”恢复和暂停的回退逻辑。

于 2013-03-19T10:01:15.480 回答