gpt4 book ai didi

java - 无法将 SurfaceTexture 设置为已释放的 SurfaceTexture

转载 作者:行者123 更新时间:2023-11-30 01:39:49 29 4
gpt4 key购买 nike

onPause 中,我使用 mTextureView.getSurfaceTexture()

将 surfaceTexture 存储到类变量 mTextureViewSurface

onResume 中我这样做:

if (mTextureView.isAvailable()) {
...
} else {
mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);
}

在那里我尝试恢复 surfaceTexture

@Override
public void onSurfaceTextureAvailable(SurfaceTexture texture, int width, int height) {
if (mTextureViewSurface != null) {
mTextureView.setSurfaceTexture(mTextureViewSurface);
}
}

但是我得到了错误java.lang.IllegalArgumentException:无法将 SurfaceTexture 设置为已发布的 SurfaceTexture,来自 https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/TextureView.java#725

我累了,可能只是想 sleep ,但我想我应该在这里问一下,因为我可能只是在掩饰某些事情。

处理释放的表面纹理的正确方法是什么?

最佳答案

onSurfaceTextureDestroyed() 的返回值很重要——您需要返回 false 以防止系统破坏它(最终您需要手动释放它)。

您可以在 Grafika "double decode" 中找到在“快速”Activity 暂停/恢复(例如方向更改)期间保留 SurfaceTextures 的有效代码示例。 Activity 。

请注意,Android <= 4.4 中存在一个错误,可能会导致难以正确执行 - 如果您尝试在 onSurfaceTextureAvailable() 中重新附加,它似乎可以工作,但不会获得更新.

关于java - 无法将 SurfaceTexture 设置为已释放的 SurfaceTexture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34638101/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com