diff --git a/media/java/android/media/Ringtone.java b/media/java/android/media/Ringtone.java index c2bcd930dd294..6658e88184b06 100644 --- a/media/java/android/media/Ringtone.java +++ b/media/java/android/media/Ringtone.java @@ -368,6 +368,7 @@ public class Ringtone { private void destroyLocalPlayer() { if (mLocalPlayer != null) { + mLocalPlayer.setOnCompletionListener(null); mLocalPlayer.reset(); mLocalPlayer.release(); mLocalPlayer = null; @@ -464,11 +465,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); + } } } }