当纹理视图调用detachFromWindow()时,如何保留其渲染数据?

时间:2019-01-17 07:42:06

标签: android textureview

我想将Textureview添加到视图组中,并且该视图组将频繁调用attachToWindow和detachFromWindow。为了不显示黑色视图,我像这样保存了该纹理视图的表面纹理。

它对大多数手机有用,但对某些配备GPU Mali-T624〜860 / Intel HD Graphics for Atom x5的设备却没有用。这些无用设备的GlEs版本低于3.2(3.1 / 3.0)。

我该如何解决问题?

    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
        if (mMediaPlayer == null) {
            initPlayer();
        }
        if (mSurfaceTexture == null) {
            mSurfaceTexture = surface;
            if (mSurface == null) {
                mSurface = new Surface(mSurfaceTexture);
                mMediaPlayer.setSurface(mSurface);
            }
        } else {
            mVideoTextureView.setSurfaceTexture(mSurfaceTexture);
        }
    }

当方法不起作用时,我会找到一些日志。

queueBuffer:插槽1被丢弃,手柄= 0xaf850780

1 个答案:

答案 0 :(得分:0)

您可以使用非常简单的自定义TextureView解决此问题。

创建一个TextureView的新子类,并覆盖“ destroyHardwareResources”的方法。请记住将此方法设为空。 然后您将得到想要的东西。

public class MyTextureView extends TextureView {
...
...
@Override
protected void destroyHardwareResources() {

}
...
...

}