diff options
-rw-r--r-- | media/java/android/media/MediaServiceManager.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/media/java/android/media/MediaServiceManager.java b/media/java/android/media/MediaServiceManager.java index b899559d2e50..fd89c0c67e71 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) { + public ServiceRegisterer(String serviceName, boolean lazyStart) { mServiceName = serviceName; + mLazyStart = lazyStart; + } + + /** + * @hide + */ + public ServiceRegisterer(String 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*/); } /** |