Merge "Pull background executor back to pm.injector"
This commit is contained in:
committed by
Android (Google) Code Review
commit
7e54ad1a6d
@@ -35,9 +35,6 @@ import android.content.pm.parsing.component.ParsedInstrumentation;
|
||||
import android.content.pm.parsing.component.ParsedIntentInfo;
|
||||
import android.content.pm.parsing.component.ParsedMainComponent;
|
||||
import android.content.pm.parsing.component.ParsedProvider;
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerExecutor;
|
||||
import android.os.HandlerThread;
|
||||
import android.os.Process;
|
||||
import android.os.Trace;
|
||||
import android.os.UserHandle;
|
||||
@@ -353,13 +350,9 @@ public class AppsFilter {
|
||||
injector.getUserManagerInternal().getUserInfos());
|
||||
}
|
||||
};
|
||||
HandlerThread appsFilterThread = new HandlerThread("appsFilter");
|
||||
appsFilterThread.start();
|
||||
Handler appsFilterHandler = new Handler(appsFilterThread.getLooper());
|
||||
Executor executor = new HandlerExecutor(appsFilterHandler);
|
||||
|
||||
AppsFilter appsFilter = new AppsFilter(stateProvider, featureConfig,
|
||||
forcedQueryablePackageNames, forceSystemAppsQueryable, null, executor);
|
||||
forcedQueryablePackageNames, forceSystemAppsQueryable, null,
|
||||
injector.getBackgroundExecutor());
|
||||
featureConfig.setAppsFilter(appsFilter);
|
||||
return appsFilter;
|
||||
}
|
||||
|
||||
@@ -248,6 +248,8 @@ import android.os.Debug;
|
||||
import android.os.Environment;
|
||||
import android.os.FileUtils;
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerExecutor;
|
||||
import android.os.HandlerThread;
|
||||
import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
@@ -420,6 +422,7 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -924,6 +927,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
private final Object mLock;
|
||||
private final Installer mInstaller;
|
||||
private final Object mInstallLock;
|
||||
private final Executor mBackgroundExecutor;
|
||||
|
||||
// ----- producers -----
|
||||
private final Singleton<ComponentResolver> mComponentResolverProducer;
|
||||
@@ -945,6 +949,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
|
||||
Injector(Context context, Object lock, Installer installer,
|
||||
Object installLock, PackageAbiHelper abiHelper,
|
||||
Executor backgroundExecutor,
|
||||
Producer<ComponentResolver> componentResolverProducer,
|
||||
Producer<PermissionManagerServiceInternal> permissionManagerProducer,
|
||||
Producer<UserManagerService> userManagerProducer,
|
||||
@@ -966,6 +971,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
mInstaller = installer;
|
||||
mAbiHelper = abiHelper;
|
||||
mInstallLock = installLock;
|
||||
mBackgroundExecutor = backgroundExecutor;
|
||||
mComponentResolverProducer = new Singleton<>(componentResolverProducer);
|
||||
mPermissionManagerProducer = new Singleton<>(permissionManagerProducer);
|
||||
mUserManagerProducer = new Singleton<>(userManagerProducer);
|
||||
@@ -1079,6 +1085,10 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
public PlatformCompat getCompatibility() {
|
||||
return mPlatformCompatProducer.get(this, mPackageManager);
|
||||
}
|
||||
|
||||
public Executor getBackgroundExecutor() {
|
||||
return mBackgroundExecutor;
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting(visibility = Visibility.PRIVATE)
|
||||
@@ -2581,17 +2591,21 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
t.traceBegin("create package manager");
|
||||
final Object lock = new Object();
|
||||
final Object installLock = new Object();
|
||||
HandlerThread backgroundThread = new HandlerThread("PackageManagerBg");
|
||||
backgroundThread.start();
|
||||
Handler backgroundHandler = new Handler(backgroundThread.getLooper());
|
||||
|
||||
Injector injector = new Injector(
|
||||
context, lock, installer, installLock, new PackageAbiHelperImpl(),
|
||||
new HandlerExecutor(backgroundHandler),
|
||||
(i, pm) ->
|
||||
new ComponentResolver(i.getUserManagerService(), pm.mPmInternal, lock),
|
||||
(i, pm) ->
|
||||
PermissionManagerService.create(context, lock),
|
||||
PermissionManagerService.create(context, lock),
|
||||
(i, pm) ->
|
||||
new UserManagerService(context, pm,
|
||||
new UserDataPreparer(installer, installLock, context, onlyCore),
|
||||
lock),
|
||||
new UserManagerService(context, pm,
|
||||
new UserDataPreparer(installer, installLock, context, onlyCore),
|
||||
lock),
|
||||
(i, pm) ->
|
||||
new Settings(Environment.getDataDirectory(),
|
||||
i.getPermissionManagerServiceInternal().getPermissionSettings(),
|
||||
|
||||
Reference in New Issue
Block a user