我正在尝试将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)
我不知道这可能意味着什么,有什么建议吗?
答案 0 :(得分:1)
当进程被休眠或推送到后台时,操作系统可以自动释放EGL上下文,以便停止所有系统资源(EGL上下文和资源的内存)被用尽后台进程。当进程再次被重新定位时,应用程序必须重建EGL上下文(以及所有图形资源)。
请参阅onPause()
此处的文档:
https://developer.android.com/reference/android/opengl/GLSurfaceView.html
您可以使用setPreserveEGLContextOnPause()
禁用此功能(在某些设备上,不保证可以正常工作,例如,如果设备不支持多个EGL上下文且前台进程需要一个),但不建议这样做,因为它会锁定因此前台应用程序无法使用的资源。