diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java index 97614619653e5..e23542edb2143 100644 --- a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java +++ b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java @@ -42,6 +42,7 @@ import java.util.Objects; /** * Maintains a connection to a particular media route provider service. */ +// TODO: Need to revisit the bind/unbind/connect/disconnect logic in this class. final class MediaRoute2ProviderProxy extends MediaRoute2Provider implements ServiceConnection { private static final String TAG = "MR2ProviderProxy"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); @@ -252,6 +253,19 @@ final class MediaRoute2ProviderProxy extends MediaRoute2Provider implements Serv disconnect(); } + @Override + public void onBindingDied(ComponentName name) { + if (DEBUG) { + Slog.d(TAG, this + ": Service binding died"); + } + // TODO: Investigate whether it tries to bind endlessly when the service is + // badly implemented. + if (shouldBind()) { + unbind(); + bind(); + } + } + private void onConnectionReady(Connection connection) { if (mActiveConnection == connection) { mConnectionReady = true;