checkAndUpdateEglState:当前EGLContext无效

时间:2016-12-08 13:12:08

标签: android opengl-es

我正在尝试将Kickflip用作我的项目中的流式库。

一切似乎都运转良好,我在服务器中完美地接收了广播。除非我按下Android上的电源按钮并且屏幕变为空白,当返回应用程序时我会收到此错误:

12-08 14:04:05.225 8514-9009/com.kelmer.myapp E/GLConsumer: [SurfaceTexture-1-8514-0] checkAndUpdateEglState: invalid current EGLContext
12-08 14:04:05.229 8514-9009/com.kelmer.myapp E/AndroidRuntime: FATAL EXCEPTION: GLThread 549
                                                                           Process: com.kelmer.myapp, PID: 8514
                                                                           java.lang.IllegalStateException: Unable to update texture contents (see logcat for details)
                                                                               at android.graphics.SurfaceTexture.nativeUpdateTexImage(Native Method)
                                                                               at android.graphics.SurfaceTexture.updateTexImage(SurfaceTexture.java:240)
                                                                               at io.kickflip.sdk.av.CameraSurfaceRenderer.onDrawFrame(CameraSurfaceRenderer.java:120)
                                                                               at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1553)
                                                                               at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1253)

我不知道这可能意味着什么,有什么建议吗?

1 个答案:

答案 0 :(得分:1)

当进程被休眠或推送到后台时,操作系统可以自动释放EGL上下文,以便停止所有系统资源(EGL上下文和资源的内存)被用尽后台进程。当进程再次被重新定位时,应用程序必须重建EGL上下文(以及所有图形资源)。

请参阅onPause()此处的文档:

https://developer.android.com/reference/android/opengl/GLSurfaceView.html

您可以使用setPreserveEGLContextOnPause()禁用此功能(在某些设备上,不保证可以正常工作,例如,如果设备不支持多个EGL上下文且前台进程需要一个),但不建议这样做,因为它会锁定因此前台应用程序无法使用的资源。