Estoy escribiendo un reproductor de audio con MediaPlayer que permite al usuario omitir la melodía real. Se puede producir una solicitud de omisión en cualquier momento, incluso entre una llamada a MediaPlayer.prepareAsync y la próxima devolución de llamada onPrepared. El documento dice:¿Es seguro reiniciar un MediaPlayer en el estado de preparación?
Es importante tener en cuenta que el estado de Preparación es un estado transitorio, y el comportamiento de llamar a cualquier método con efecto secundario mientras un objeto MediaPlayer está en el estado Preparación no está definido.
¿Eso incluye llamadas para restablecer, o incluso para liberar? Porque si es así, entonces tendría que esperar la devolución de llamada en preparación para reutilizar el MediaPlayer o asignar un nuevo MediaPlayer si no quiero esperar y liberar el obsoleto en la devolución de llamada en línea, ¿no?
He leído en algún lado que las instancias de MediaPlayer son bastantes pesadas en recursos y que nunca debemos confiar en más de dos. Ya uso dos instancias: una para tocar la melodía real, la otra para preparar (y reproducir) la siguiente. Entonces, si MediaPlayer.release fue al menos válido en todo momento, entonces podría asegurarme de que no tenga más de dos instancias de MediaPlayer. – Simon
Eso está bien, con dos instancias puede esperar a que el estado de preparación cambie al estado preparado antes de soltarlo, mientras que con el otro toca la siguiente canción. –