diff --git a/apex/service/java/com/android/server/media/MediaCommunicationService.java b/apex/service/java/com/android/server/media/MediaCommunicationService.java
index b88e586..3ebb40b 100644
--- a/apex/service/java/com/android/server/media/MediaCommunicationService.java
+++ b/apex/service/java/com/android/server/media/MediaCommunicationService.java
@@ -272,20 +272,15 @@
         }
     }
 
-    void onSessionDied(Session2Record session) {
+    private void removeSessionRecord(Session2Record session) {
         if (DEBUG) {
-            Log.d(TAG, "Destroying " + session);
-        }
-        if (session.isClosed()) {
-            Log.w(TAG, "Destroying already destroyed session. Ignoring.");
-            return;
+            Log.d(TAG, "Removing " + session);
         }
 
         FullUserRecord user = session.getFullUser();
         if (user != null) {
             user.removeSession(session);
         }
-        session.close();
     }
 
     void onSessionPlaybackStateChanged(Session2Record session, boolean promotePriority) {
@@ -681,10 +676,13 @@
                 }
                 synchronized (mSession2RecordLock) {
                     mIsConnected = false;
+                    // As per onDisconnected documentation, we do not need to call close() after
+                    // onDisconnected is called.
+                    mIsClosed = true;
                 }
                 MediaCommunicationService service = mServiceRef.get();
                 if (service != null) {
-                    service.onSessionDied(Session2Record.this);
+                    service.removeSessionRecord(Session2Record.this);
                 }
             }
 
