MEDIA_ERROR_SERVER_DIED是什么意思?

yyd*_*ydl 21 error-handling android android-mediaplayer

Android文档中,有一个常量定义MEDIA_ERROR_SERVER_DIED,描述为:

媒体服务器死了.在这种情况下,应用程序必须释放MediaPlayer对象并实例化一个新对象.

这看起来很模糊.媒体服务器死了是什么意思?为什么会死?通过立即尝试再次播放来处理它是否合适?

Laj*_*nar 11

在Android中,大多数媒体活动(解码/编码)都发生在mediaserver中,除了在有限的情况下,例如使用软件编解码器播放本地文件.Android mediaserver会定期崩溃(中止)硬件错误,格式错误的文件或数据.对,对不起!

由于许多活动共享一个共同的mediaserver,任何活动中的错误都可能导致mediaserver崩溃.这种情况最常发生在后台活动(如媒体扫描程序或Google+自动特辑电影)尝试扫描损坏或仅支持的文件时.发生这种情况时,使用mediaserver的其余进程会收到通知.在MediaPlayer或MediaRecorder的情况下,此通知将传递给应用程序.

当mediaserver死亡时,会立即重新启动.即使服务器死了,应用程序上的代理对象仍然存在并且正在使用资源.因此需要释放对象.在通知后立即创建新的应该是安全的.