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,伙计,非常感谢!我现在重新访问了这个,它工作得非常好!