我有一个活动(比如活动 A),它使用媒体播放器显示视频,呈现在表面视图中。
用例是暂停视频,启动另一个活动(比如活动 B),然后回到活动 A。
活动 A 停止但在转到 B 时没有销毁,这很好。
表面视图(因为不可见)被破坏(从通知回调中观察到)。
当回到活动 A 并使用 start() 重新启动媒体播放器时,媒体播放器会播放音频,但看不到视频。Logcat 上会输出类似这样的错误:
11-16 18:14:44.532: ERROR/Overlay(8630): Error = Invalid argument from qbuf
不幸的是,使用SurfaceHolder
as 提供的新实例surfaceCreated()
并没有帮助(即提供相同的错误)。
我已经在各种帖子中阅读过一个解决方案是重置mediaplayer
并完全重新启动它,但是它效率不高,因为最终用户必须等待cycle + seekTo last positio
流中的整个播放器准备 n。
正如音频播放的事实所示,这应该是视频解码器和新的surfaceholder/view
.
恢复活动时恢复视频播放的最佳解决方案(最佳 = 最快)应该是什么?