diff --git a/media/java/android/media/Ringtone.java b/media/java/android/media/Ringtone.java index 8ae6e6bda0f2c..754fe45c2a069 100644 --- a/media/java/android/media/Ringtone.java +++ b/media/java/android/media/Ringtone.java @@ -371,6 +371,7 @@ public class Ringtone { private void destroyLocalPlayer() { if (mLocalPlayer != null) { + mLocalPlayer.setOnCompletionListener(null); mLocalPlayer.reset(); mLocalPlayer.release(); mLocalPlayer = null; @@ -467,11 +468,14 @@ public class Ringtone { } class MyOnCompletionListener implements MediaPlayer.OnCompletionListener { - public void onCompletion(MediaPlayer mp) - { + @Override + public void onCompletion(MediaPlayer mp) { synchronized (sActiveRingtones) { sActiveRingtones.remove(Ringtone.this); } + if (mLocalPlayer != null) { + mLocalPlayer.setOnCompletionListener(null); + } } } }