In Android, most of media activity (decoding/encoding) happens in the mediaserver, except in limited cases, such as local file playback using software codec. Android mediaserver routinely crashes (aborts) on hardware errors, incorrectly formatted files or data. Yeah, sorry!
Since many activities share a common mediaserver, an error in any of the activities can crash mediaserver. This most commonly happens when a background activity, such as media scanner or Google+ Auto-Awesome Movies tries to scan a corrupt or just unsupported file. When this happens, the remaining processes that used mediaserver receive a notification. This notification is passed to the app in case of MediaPlayer or MediaRecorder.
When mediaserver dies, it is immediately restarted. Even though the server dies, the proxy object on the application is still alive and is using resources. Hence the need to release the object. It should be safe to create a new one immediately after the notification.