2015-03-18 3 views
0
mySound.setOnCompletionListener(new OnCompletionListener() { 
@Override 
public void onCompletion(MediaPlayer mp) { 
      mp.release();... 
} 

Код отлично работает, если mySound не изменен. Но когда mySound выпущен и повторно инициализирован, код больше не работает.OnCompletionListener не работает, как только mediaplayer повторно инициализируется

ответ

2

Цитируется Google:

Когда сделано с MediaPlayer, вы должны вызвать Release(), чтобы освободить ресурсы. Если не выпущено, слишком много экземпляров MediaPlayer приведут к ошибке .

после вызова release(), и если вам нужно использовать это снова, вы должны создать новый экземпляр MediaPlayer и повторную инициализацию, также включая setOnCompletionListener.

mPlayer.release(); 
mPlayer = null; 

mPlayer = new MediaPlayer(); 
... 
mPlayer.setOnCompletionListener(new OnCompletionListener() 
{ 
    @Override 
    public void onCompletion(MediaPlayer mp) 
    { 

    } 
}); 
+0

Не могли бы вы объяснить, как это решает проблему? – beresfordt

+0

Thanx. Это помогло. –

+0

Кажется, что после повторной инициализации не задано 'setOnCompletionListener'. Конечно, это не сработает, потому что вы создали новые ссылки, и вы должны повторно инициализировать. – AliDK

Смежные вопросы