繁体   English   中英

何时调用GLSurfaceView方法onPause()和onResume()

[英]When to call GLSurfaceView methods onPause() and onResume()

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

看起来像是GLSurfaceView中的错误,它通过容忍您忘记调用onResume()onPause()来试图变得聪明。 我不确定这是否是故意的。

忽略呼叫几乎总是可行的,但是在某些情况下可能导致奇怪的行为并崩溃。 我不确定这些情况是什么,但是我已经追溯到一些奇怪的崩溃,原因是缺少onResume() / onPause()调用。 当您不调用状态机时, GLSurfaceView的状态机会有些混乱–看起来“自动”恢复和暂停的后备逻辑在100%的情况下不会触发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM