我有一个基本的Activity类,它创建一个GLSurfaceView,并在其SetRenderer方法中传递了一个从Renderer派生的类。现在,我知道当手机或平板电脑进入睡眠状态时,OpenGL资源可能会丢失(到目前为止,是DirectX 9),并且当手机从其睡眠状态返回时,必须重新创建这些资源。

我是否认为我的所有其他课程,活动等都完全恢复到唤醒时的状态?即我只需要在onSurfaceCreated方法中重新绑定纹理,着色器,GL状态等内容。我不需要重新创建视图或渲染器对象。

在电话唤醒时或在启动时仅调用一次onSurfaceCreated方法吗?我在onSurfaceCreated中收到的GL对象是否已销毁(即,可以安全地存储它并在睡眠/唤醒周期中使用它)?

最佳答案

我是否认为我的所有其他课程,活动等都完全恢复到唤醒时的状态?


这取决于活动是否在这些“唤醒”之间被杀死。如果在两次暂停之间没有取消活动,则将恢复您离开活动时的所有班级。


  我只需要在onSurfaceCreated方法中重新绑定诸如纹理,着色器,GL状态之类的东西。我不需要重新创建视图或渲染器对象。


正确。


  电话唤醒时或在启动时仅调用一次onSurfaceCreated方法吗?


每次创建新表面时都会调用它,这意味着您的应用程序每次从后台进入前台。

07-27 13:58