Reconnect to DataLoaders on restart.

Bug: b/151241369
Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest
Change-Id: I1532df63a2a36104dbd9cd90ee4e5f40bae00a6a
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index 2c6bf0a..695b68b 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -353,10 +353,14 @@
         }
     }
 
-    /* TODO(b/151241369): restore data loaders on reboot.
+    if (mounts.empty()) {
+        return;
+    }
+
     std::thread([this, mounts = std::move(mounts)]() {
+        mJni->initializeForCurrentThread();
         for (auto&& ifs : mounts) {
-            if (prepareDataLoader(*ifs)) {
+            if (ifs->dataLoaderStub->create()) {
                 LOG(INFO) << "Successfully started data loader for mount " << ifs->mountId;
             } else {
                 // TODO(b/133435829): handle data loader start failures
@@ -364,7 +368,6 @@
             }
         }
     }).detach();
-    */
 }
 
 auto IncrementalService::getStorageSlotLocked() -> MountMap::iterator {
@@ -1068,6 +1071,9 @@
         dataLoaderParams.arguments = loader.arguments();
     }
 
+    prepareDataLoader(*ifs, std::move(dataLoaderParams), nullptr);
+    CHECK(ifs->dataLoaderStub);
+
     std::vector<std::pair<std::string, metadata::BindPoint>> bindPoints;
     auto d = openDir(path::c_str(mountTarget));
     while (auto e = ::readdir(d.get())) {