PackageManager Handler Thread Priorities adjustment.
Primary handler thread priority changed to DEFAULT from BACKGROUND. Secondary handler thread priority changed to BACKGROUND from DEFAULT. There are a few write* operations which include IO, but they are executed under mLock and we want them to complete ASAP. If at some point they are made lockless then we will move them to the secondary thread. Bug: 230521658 Fixes: 230521658 Test: presubmit Change-Id: I4d0c6ea696e31976216c69b9be10a8f3f5efd833
This commit is contained in:
@@ -2545,7 +2545,6 @@ final class InstallPackageHelper {
|
||||
ArrayList<String>[] components;
|
||||
int size = 0;
|
||||
int[] uids;
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
|
||||
|
||||
synchronized (mPm.mLock) {
|
||||
final SparseArray<ArrayMap<String, ArrayList<String>>> userIdToPackagesToComponents =
|
||||
@@ -2584,7 +2583,6 @@ final class InstallPackageHelper {
|
||||
mPm.sendPackageChangedBroadcast(snapshot, packages[i], true /* dontKillApp */,
|
||||
components[i], uids[i], null /* reason */);
|
||||
}
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
|
||||
}
|
||||
|
||||
void handlePackagePostInstall(PackageInstalledInfo res, InstallArgs installArgs,
|
||||
|
||||
@@ -75,7 +75,7 @@ final class PackageHandler extends Handler {
|
||||
try {
|
||||
doHandleMessage(msg);
|
||||
} finally {
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,19 +136,13 @@ final class PackageHandler extends Handler {
|
||||
}
|
||||
} break;
|
||||
case WRITE_SETTINGS: {
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
|
||||
mPm.writeSettings();
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
|
||||
} break;
|
||||
case WRITE_PACKAGE_RESTRICTIONS: {
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
|
||||
mPm.writePendingRestrictions();
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
|
||||
} break;
|
||||
case WRITE_PACKAGE_LIST: {
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
|
||||
mPm.writePackageList(msg.arg1);
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
|
||||
} break;
|
||||
case CHECK_PENDING_VERIFICATION: {
|
||||
final int verificationId = msg.arg1;
|
||||
|
||||
@@ -1413,7 +1413,9 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
t.traceBegin("create package manager");
|
||||
final PackageManagerTracedLock lock = new PackageManagerTracedLock();
|
||||
final Object installLock = new Object();
|
||||
HandlerThread backgroundThread = new HandlerThread("PackageManagerBg");
|
||||
|
||||
HandlerThread backgroundThread = new ServiceThread("PackageManagerBg",
|
||||
Process.THREAD_PRIORITY_BACKGROUND, true /*allowIo*/);
|
||||
backgroundThread.start();
|
||||
Handler backgroundHandler = new Handler(backgroundThread.getLooper());
|
||||
|
||||
@@ -1467,7 +1469,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
(i, pm) -> domainVerificationService,
|
||||
(i, pm) -> {
|
||||
HandlerThread thread = new ServiceThread(TAG,
|
||||
Process.THREAD_PRIORITY_BACKGROUND, true /*allowIo*/);
|
||||
Process.THREAD_PRIORITY_DEFAULT, true /*allowIo*/);
|
||||
thread.start();
|
||||
return new PackageHandler(thread.getLooper(), pm);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user