summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/java/android/media/MediaServiceManager.java16
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*/);
}
/**