diff options
Diffstat (limited to 'media/java/android/media/session/MediaController.java')
-rw-r--r-- | media/java/android/media/session/MediaController.java | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/media/java/android/media/session/MediaController.java b/media/java/android/media/session/MediaController.java index e490c2b..dd6bd20 100644 --- a/media/java/android/media/session/MediaController.java +++ b/media/java/android/media/session/MediaController.java @@ -449,6 +449,7 @@ public final class MediaController { } MessageHandler holder = new MessageHandler(handler.getLooper(), cb); mCallbacks.add(holder); + holder.mRegistered = true; if (!mCbRegistered) { try { @@ -467,6 +468,7 @@ public final class MediaController { if (cb == handler.mCallback) { mCallbacks.remove(i); success = true; + handler.mRegistered = false; } } if (mCbRegistered && mCallbacks.size() == 0) { @@ -956,6 +958,7 @@ public final class MediaController { private final static class MessageHandler extends Handler { private final MediaController.Callback mCallback; + private boolean mRegistered = false; public MessageHandler(Looper looper, MediaController.Callback cb) { super(looper, null, true); @@ -964,6 +967,9 @@ public final class MediaController { @Override public void handleMessage(Message msg) { + if (!mRegistered) { + return; + } switch (msg.what) { case MSG_EVENT: mCallback.onSessionEvent((String) msg.obj, msg.getData()); |