2012-02-09 13 views
5

Qual è il modo corretto per arrestare uno MediaController con un allegato MediaPlayer?Qual è il modo giusto per disconnettere un MediaController?

Non è possibile eseguire mediaController.setMediaPlayer(null) - che chiama immediatamente updatePausePlay, che dereferenzia il valore null.

Non è possibile chiamare mediaPlayer.release(), dal momento che MediaController chiamerà MediaPlayer # getCurrentPosition e che genera un IllegalStateException dopo che è stato chiamato release().

+0

provare a chiamare 'mediaPlayer.reset()' 'prima mediaPlayer.release()' – Yahia

risposta

4

provate il frammento di seguito, in questo ordine

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

Ma _perché_ pensi che questo è il modo giusto per fermarlo, non solo qualcosa che funziona ora e fallirà la prossima settimana? –

+0

Non sicuro al 100% su questo, ma ecco la mia ipotesi sul perché è la strada giusta. 'mediaController.hide()' impedisce a MediaController di essere visualizzato e quindi di interrogare 'mediaPlayer'. Una volta che non si interroga più il 'mediaPlayer', è possibile arrestarlo interrompendolo e rilasciandolo (non è necessario fermarlo prima, non averlo provato). Non vedo in alcun modo che ciò possa fallire in futuro, a meno che non provi ad usare nuovamente lo stesso mediaController dopo aver rilasciato MediaPlayer senza indicarlo a qualcosa di nuovo. Questo mi sembra giusto. – jp36

Problemi correlati