Move expensive code from BroadcastReceiver to background thread

Bug: 138460874
Test: atest apexservice_test
Test: atest CtsStagedInstallHostTestCases
Test: atest RollbackTest
Change-Id: I1cd7daa066f32832814c28423c5c30e39c230600
diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java
index a1b6d49..1da5bc6 100644
--- a/services/core/java/com/android/server/pm/ApexManager.java
+++ b/services/core/java/com/android/server/pm/ApexManager.java
@@ -38,6 +38,7 @@
 import android.util.Slog;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.os.BackgroundThread;
 import com.android.internal.util.IndentingPrintWriter;
 
 import java.io.File;
@@ -263,7 +264,8 @@
                     populateAllPackagesCacheIfNeeded();
                     mContext.unregisterReceiver(this);
                 }
-            }, new IntentFilter(Intent.ACTION_BOOT_COMPLETED));
+            }, new IntentFilter(Intent.ACTION_BOOT_COMPLETED), /* broadcastPermission */ null,
+                    BackgroundThread.getHandler());
         }
 
         private void populateAllPackagesCacheIfNeeded() {