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);