Lazily fetch the MediaTranscodeManager service
To improve memory usage on the device, we now fetch the service
dynamically, the first time we need it, instead of at boot.
Test: atest TranscodeTest
Bug: 187271658
Change-Id: If313d3b4fcc31b8debfc73d5750c39ff83268c82
diff --git a/src/com/android/providers/media/TranscodeHelper.java b/src/com/android/providers/media/TranscodeHelper.java
index 19efa8d..c500bf6 100644
--- a/src/com/android/providers/media/TranscodeHelper.java
+++ b/src/com/android/providers/media/TranscodeHelper.java
@@ -221,7 +221,6 @@
private final MediaProvider mMediaProvider;
private final PackageManager mPackageManager;
private final StorageManager mStorageManager;
- private final MediaTranscodeManager mMediaTranscodeManager;
private final ActivityManager mActivityManager;
private final File mTranscodeDirectory;
@GuardedBy("mLock")
@@ -262,7 +261,6 @@
mContext = context;
mPackageManager = context.getPackageManager();
mStorageManager = context.getSystemService(StorageManager.class);
- mMediaTranscodeManager = context.getSystemService(MediaTranscodeManager.class);
mActivityManager = context.getSystemService(ActivityManager.class);
mMediaProvider = mediaProvider;
mTranscodeDirectory = new File("/storage/emulated/" + UserHandle.myUserId(),
@@ -1121,6 +1119,9 @@
private TranscodingSession enqueueTranscodingSession(String src, String dst, int uid,
final CountDownLatch latch) throws UnsupportedOperationException, IOException {
+ // Fetch the service lazily to improve memory usage
+ final MediaTranscodeManager mediaTranscodeManager =
+ mContext.getSystemService(MediaTranscodeManager.class);
File file = new File(src);
File transcodeFile = new File(dst);
@@ -1144,7 +1145,7 @@
.setSourceFileDescriptor(srcPfd)
.setDestinationFileDescriptor(dstPfd)
.build();
- TranscodingSession session = mMediaTranscodeManager.enqueueRequest(request,
+ TranscodingSession session = mediaTranscodeManager.enqueueRequest(request,
ForegroundThread.getExecutor(),
s -> {
mTranscodingUiNotifier.stop(s, src);