【问题标题】:Android SurfaceTexture.detachFromGLContext Error during detachFromGLContextAndroid SurfaceTexture.detachFromGLContext 在 detachFromGLContext 期间出错
【发布时间】:2015-02-03 12:39:05
【问题描述】:

我正在尝试在视频上使用 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)

【问题讨论】:

  • 异常说see logcat for details,说明logcat中存在异常上方或下方的消息。您应该找到这些消息并将它们包含在您的问题中。
  • 我无法在本地重现它,它只会在生产中发生。
  • 我也有同样的问题。如果有人解决了,请告诉我
  • 我在 4.4 上看到了这个,但在 5.0 及更高版本上没有看到。另外,我正在使用 TextureView.setSurfaceTexture。你们也是这样吗?
  • 嗨,你解决了吗?谢谢

标签: android opengl-es textureview


【解决方案1】:

也许您必须从​​ GLThread 调用此方法 detachFromGLContext()GLSurfaceView 中的方法 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);
}

【讨论】:

  • 问题出现在 TextureView 而不是 SurfaceView 或 GLSurfaceView。虽然这个答案对于需要在 GL 线程上完成的调用有一些价值。问题是 Android 正在调用 detachFromGLContext,所以很难判断它是否在正确的线程上。
猜你喜欢
  • 2014-08-31
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多