Reproductor multimedia prepareAsync () excepción de estado ilegal Android

Este es mi código de la clase Videoplayer, dio una excepción cada vez que voy a casa y luego volvió a esta actividad directamente, he intentado pero no puedo encontrar una solución, error:

java.lang.IllegalStateException at android.media.MediaPlayer.prepareAsync(Native Method) at com.shaw.wind.predict2win.VideoPlayerActivity.surfaceCreated(VideoPlayerActivity.java:85) at android.view.SurfaceView.updateWindow(SurfaceView.java:600) at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:243) at android.view.View.dispatchWindowVisibilityChanged(View.java:9122) at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1170) at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1170) at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1170) at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1170) at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1170) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1330) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1073) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5988) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5930) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 

Y código:

 public void surfaceCreated(SurfaceHolder holder) { player.setDisplay(holder); player.prepareAsync(); } (player is object of mediaplayer) 

Compruebe si la vista de la superficie está siendo destruida. En ese caso tratar de liberar recursos dentro de la superficie destruir método:

  if (mMediaPlayer != null) { mMediaPlayer.reset(); mMediaPlayer.release(); mMediaPlayer = null; } 

Y reiniciar el reproductor multimedia en el reanudación de la actividad.

Encontró la solución, re inicialización de variables en onRestart () ayudó.Pero todavía no está seguro de lo que era exactamente el problema

 @Override public void onRestart(){ super.onRestart(); player = new MediaPlayer(); videoSurface = (SurfaceView) findViewById(R.id.videoSurface); SurfaceHolder videoHolder = videoSurface.getHolder(); videoHolder.addCallback(this); controller = new VideoControllerView(this); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.