Improve the cache rebuild latency of AppsFilter on boot #3

Returns early if the app id of caller or target package is
the core app id.

Bug: 262515424
Test: atest CtsAppEnumerationTestCases
Change-Id: If27ddbd1c94955a1bacfe983998ea7b9ba0c7cd5
This commit is contained in:
Rhed Jao
2022-12-30 17:39:32 +08:00
parent 383a053610
commit af5f0c40f1

View File

@@ -399,6 +399,24 @@ public abstract class AppsFilterBase implements AppsFilterSnapshot {
Slog.wtf(TAG, "No setting found for non system uid " + callingUid);
return true;
}
if (DEBUG_TRACING) {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "getAppId");
}
final int callingAppId = UserHandle.getAppId(callingUid);
final int targetAppId = targetPkgSetting.getAppId();
if (DEBUG_TRACING) {
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
}
if (callingAppId == targetAppId
|| callingAppId < Process.FIRST_APPLICATION_UID
|| targetAppId < Process.FIRST_APPLICATION_UID) {
if (DEBUG_LOGGING) {
log(callingSetting, targetPkgSetting, "same app id or core app id");
}
return false;
}
final PackageStateInternal callingPkgSetting;
if (DEBUG_TRACING) {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "callingSetting instanceof");
@@ -446,27 +464,6 @@ public abstract class AppsFilterBase implements AppsFilterSnapshot {
}
}
if (DEBUG_TRACING) {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "getAppId");
}
final int callingAppId;
if (callingPkgSetting != null) {
callingAppId = callingPkgSetting.getAppId();
} else {
// all should be the same
callingAppId = callingSharedPkgSettings.valueAt(0).getAppId();
}
final int targetAppId = targetPkgSetting.getAppId();
if (DEBUG_TRACING) {
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
}
if (callingAppId == targetAppId) {
if (DEBUG_LOGGING) {
log(callingSetting, targetPkgSetting, "same app id");
}
return false;
}
try {
if (DEBUG_TRACING) {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "requestsQueryAllPackages");