2012-02-09 14 views
5

¿Cuál es la forma correcta de cerrar un MediaController con un MediaPlayer adjunto?¿Cuál es la forma correcta de desconectar un MediaController?

No se puede hacer mediaController.setMediaPlayer(null) - que inmediatamente llama a updatePausePlay, que desreferencia el nulo.

No puede llamar al mediaPlayer.release(), ya que MediaController va a llamar a MediaPlayer # getCurrentPosition, y eso arroja una IllegalStateException después de haber llamado al release().

+0

intentar llamar 'mediaPlayer.reset()' 'antes mediaPlayer.release()' – Yahia

Respuesta

4

tratar el siguiente fragmento de código, en este orden

mediaController.hide(); 
mediaPlayer.stop(); 
mediaPlayer.release(); 
+0

Pero _por qué_ cree usted que este es el camino correcto para detenerlo, no solo algo que funciona ahora y fallará la próxima semana? –

+0

No estoy 100% seguro de esto, pero aquí estoy adivinando por qué es el camino correcto. 'mediaController.hide()' detiene la visualización de mediaController y, por lo tanto, no consulta el 'mediaPlayer'. Una vez que ya no está consultando el 'mediaPlayer', puede apagarlo deteniéndolo y soltándolo (es posible que no necesite detenerlo primero, no lo haya intentado). Realmente no veo ninguna manera de que esto pueda fallar en el futuro a menos que intente comenzar a utilizar el mismo MediaController nuevamente después de haber lanzado el mediaPlayer sin apuntarlo a algo nuevo. Esto me parece apropiado. – jp36

Cuestiones relacionadas