diff --git a/media/java/android/media/MediaServiceManager.java b/media/java/android/media/MediaServiceManager.java index b899559d2e50a..fd89c0c67e71c 100644 --- a/media/java/android/media/MediaServiceManager.java +++ b/media/java/android/media/MediaServiceManager.java @@ -45,12 +45,21 @@ public class MediaServiceManager { */ public static final class ServiceRegisterer { private final String mServiceName; + private final boolean mLazyStart; + + /** + * @hide + */ + public ServiceRegisterer(String serviceName, boolean lazyStart) { + mServiceName = serviceName; + mLazyStart = lazyStart; + } /** * @hide */ public ServiceRegisterer(String serviceName) { - mServiceName = serviceName; + this(serviceName, false /*lazyStart*/); } /** @@ -61,6 +70,9 @@ public class MediaServiceManager { */ @Nullable public IBinder get() { + if (mLazyStart) { + return ServiceManager.waitForService(mServiceName); + } return ServiceManager.getService(mServiceName); } } @@ -78,7 +90,7 @@ public class MediaServiceManager { */ @NonNull public ServiceRegisterer getMediaTranscodingServiceRegisterer() { - return new ServiceRegisterer(MEDIA_TRANSCODING_SERVICE); + return new ServiceRegisterer(MEDIA_TRANSCODING_SERVICE, true /*lazyStart*/); } /**