Android中切换URI时VideoView导致应用冻结问题排查
VideoView多次切换视频冻结的问题排查与修复方案
你当前的切换方式存在明显问题:每次切换视频时没有正确释放前一个视频的播放资源,底层关联的MediaPlayer实例未被彻底回收,多次切换后会导致系统资源占用过高,最终引发应用无响应(ANR)。
修复方案:切换前先释放资源
VideoView提供了stopPlayback()方法,专门用于停止播放并释放底层MediaPlayer的所有资源,包括音频、视频解码器等。在每次设置新URI前调用这个方法,就能避免资源累积问题。
修改后的切换代码如下:
切换到第二个视频(Button2点击事件)
_videoView.stopPlayback(); _videoView.setVideoURI(secondURI); _videoView.requestFocus(); _videoView.start();
切换回第一个视频(Button1点击事件)
_videoView.stopPlayback(); _videoView.setVideoURI(firstURI); _videoView.requestFocus(); _videoView.start();
额外说明
stopPlayback()是VideoView官方推荐的资源释放方式,它会彻底销毁当前关联的MediaPlayer实例,确保前一个视频的所有资源被回收。如果修改后仍有偶发问题,可以尝试在stopPlayback()后添加100-200毫秒的延迟再设置新URI,但绝大多数情况下,直接调用上述代码就能解决多次切换后的冻结问题。
内容的提问来源于stack exchange,提问作者Elliptica
相关产品推荐
相关产品推荐

