diff --git a/src/ch/blinkenlights/android/medialibrary/MediaLibrary.java b/src/ch/blinkenlights/android/medialibrary/MediaLibrary.java
index 2f84d8bc..dd6654a4 100644
--- a/src/ch/blinkenlights/android/medialibrary/MediaLibrary.java
+++ b/src/ch/blinkenlights/android/medialibrary/MediaLibrary.java
@@ -12,7 +12,7 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*/
package ch.blinkenlights.android.medialibrary;
@@ -274,6 +274,23 @@ public class MediaLibrary {
}
}
+ /**
+ * Unregisters a content observer which was previously registered
+ * by calling registerContentObserver().
+ *
+ * @param observer the content observer to unregister.
+ */
+ public static void unregisterContentObserver(ContentObserver observer) {
+ if (sContentObserver == null)
+ throw new IllegalStateException("No ContentObserver was registered!");
+
+ if (!sContentObserver.equals(observer))
+ throw new IllegalArgumentException("Passed content observer was not the one you registered!");
+
+ // Sanity check passed: unregister observer.
+ sContentObserver = null;
+ }
+
/**
* Broadcasts a change to the observer, which will queue and dispatch
* the event to any registered observer
diff --git a/src/ch/blinkenlights/android/vanilla/PlaybackService.java b/src/ch/blinkenlights/android/vanilla/PlaybackService.java
index 534b7dd0..db02f7e5 100644
--- a/src/ch/blinkenlights/android/vanilla/PlaybackService.java
+++ b/src/ch/blinkenlights/android/vanilla/PlaybackService.java
@@ -598,6 +598,8 @@ public final class PlaybackService extends Service
// defer wakelock and close audioFX
enterSleepState();
+ MediaLibrary.unregisterContentObserver(mObserver);
+
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;