You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

三星设备Fragment销毁时TextureView播放视频闪烁求助

解决三星设备Fragment销毁时RecyclerView中TextureView视频闪烁问题的思路
  • 处理TextureView残留渲染:在MediaPlayer释放后,立即给TextureView设置与页面背景一致的纯色背景或静态占位图,覆盖残留的视频帧。可在ViewHolder的onViewRecycled方法或Fragment的onDestroyView中执行:

    textureView.setBackgroundColor(getResources().getColor(R.color.page_background));
    // 或设置占位图
    textureView.setImageResource(R.drawable.video_placeholder);
    
  • 调整MediaPlayer释放顺序:先断开与TextureView的关联,再释放MediaPlayer,避免SurfaceTexture销毁时异常刷新:

    if (mediaPlayer != null) {
        mediaPlayer.stop();
        mediaPlayer.setSurface(null); // 先解除Surface关联
        mediaPlayer.release();
        mediaPlayer = null;
    }
    
  • 提前回收RecyclerView视图:在Fragment的onDestroyView方法中,将RecyclerView的Adapter置空,强制ViewHolder立即回收,避免Fragment销毁动画过程中ViewHolder仍处于可见状态:

    recyclerView.setAdapter(null);
    
  • 移除TextureView监听:在ViewHolder回收或Fragment销毁时,移除TextureView的SurfaceTextureListener,防止回调触发意外渲染:

    textureView.setSurfaceTextureListener(null);
    
  • 适配三星设备硬件加速:尝试关闭TextureView的硬件加速(需测试性能影响),可在布局中添加:

    <TextureView
        ...
        android:hardwareAccelerated="false" />
    

    或代码动态设置:

    textureView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    
  • 取消视图销毁动画:若闪烁由视图淡出动画导致,在onDestroyView中直接将TextureView透明度设为0:

    textureView.setAlpha(0f);
    

内容的提问来源于stack exchange,提问作者B.man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:12:11