在onPause
中,我使用mTextureViewSurface
mTextureView.getSurfaceTexture()
在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: Cannot setSurfaceTexture to a released SurfaceTexture
我很累,可能只是需要去睡觉,但我想我会在这里问,因为我可能只是在掩饰某些东西。
处理已发布的surfaceTextures的正确方法是什么?
答案 0 :(得分:1)
来自onSurfaceTextureDestroyed()
的返回值非常重要 - 您需要返回false
以防止系统销毁它(并且您最终需要手动释放它)。
您可以找到一个代码的工作示例,该代码可以快速保存SurfaceTextures" Grafika "double decode"活动中的活动暂停/恢复(例如,方向更改)。
请注意Android< = 4.4中的一个错误,如果您尝试重新挂接onSurfaceTextureAvailable()
它会使其工作变得棘手,那么它就会变得非常棘手 - 但它会赢得'得到更新。