Java 无法将SurfaceTexture设置为已发布的SurfaceTexture

Java 无法将SurfaceTexture设置为已发布的SurfaceTexture,java,android,textureview,Java,Android,Textureview,在onPause中,我使用mTextureView.getSurfaceTexture()将surfaceTexture存储到类变量mTextureViewSurface 在onResume中,我会: if (mTextureView.isAvailable()) { ... } else { mTextureView.setSurfaceTextureListener(mSurfaceTextureListener); } 在那里,我试图恢复表面纹理 @Override pu

onPause
中,我使用
mTextureView.getSurfaceTexture()将surfaceTexture存储到类变量
mTextureViewSurface

onResume
中,我会:

if (mTextureView.isAvailable()) {
    ...
} else {
    mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);
}
在那里,我试图恢复表面纹理

@Override
public void onSurfaceTextureAvailable(SurfaceTexture texture, int width, int height) {
        if (mTextureViewSurface != null) {
            mTextureView.setSurfaceTexture(mTextureViewSurface);
        }
}
但是我得到了错误
java.lang.IllegalArgumentException:无法将SurfaceTexture设置为来自的已发布SurfaceTexture

我很累,可能只是需要去睡觉,但我想我应该在这里问一下,因为我可能只是在掩饰一些事情

处理已发布的SurfaceTexture的正确方法是什么?

的返回值非常重要--您需要返回
false
,以防止系统破坏它(最终需要手动释放它)

您可以找到一个代码的工作示例,该代码在活动中的“快速”活动暂停/恢复(例如,方向更改)期间保留SurfaceTexture


注意,Android中有一个bug,伙计,非常感谢!我现在重新访问了这个,它工作得非常好!