Android SurfaceFxture.detachFromGLContext detachFromGLContext期间出错

Raf*_*cia 9 android opengl-es textureview

我正在尝试在视频上使用TextureView,并且在尝试使用SurfaceTexture.detachFromGLContext时崩溃了很多.

我没有在Google上找到任何东西,有没有人知道它可能是什么?

谢谢

java.lang.RuntimeException: Error during detachFromGLContext (see logcat for details)
       at android.graphics.SurfaceTexture.detachFromGLContext(SurfaceTexture.java:195)
       at android.view.TextureView.destroySurface(TextureView.java:243)
       at android.view.TextureView.destroyHardwareResources(TextureView.java:355)
       at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2311)
       at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2318)
       at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2318)
       at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2318)
       at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2318)
       at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2318)
       at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2318)
       at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2318)
       at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2318)
       at android.view.HardwareRenderer$Gl20Renderer.access$800(HardwareRenderer.java:1895)
       at android.view.HardwareRenderer$Gl20Renderer$2.run(HardwareRenderer.java:2303)
       at android.view.HardwareRenderer$Gl20Renderer.safelyRun(HardwareRenderer.java:2254)
       at android.view.HardwareRenderer$Gl20Renderer.destroyHardwareResources(HardwareRenderer.java:2297)
       at android.view.ViewRootImpl.destroyHardwareResources(ViewRootImpl.java:853)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1534)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6585)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
       at android.view.Choreographer.doCallbacks(Choreographer.java:603)
       at android.view.Choreographer.doFrame(Choreographer.java:573)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
       at android.os.Handler.handleCallback(Handler.java:733)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:5586)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
       at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)

小智 0

也许你必须从GLThread调用这个方法。GLSurfaceView中的detachFromGLContext()方法可以完成这个工作。queueEvent()

 /**
 * Queue a runnable to be run on the GL rendering thread. This can be used
 * to communicate with the Renderer on the rendering thread.
 * Must not be called before a renderer has been set.
 * @param r the runnable to be run on the GL rendering thread.
 */
public void queueEvent(Runnable r) {
    mGLThread.queueEvent(r);
}
Run Code Online (Sandbox Code Playgroud)