Merge "Fix high traffic PMS lockless methods" into tm-dev

This commit is contained in:
Winson Chiu
2022-06-17 21:58:53 +00:00
committed by Android (Google) Code Review
3 changed files with 14 additions and 6 deletions

View File

@@ -418,7 +418,9 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
} else if (changed) {
invalidateCache("grantImplicitAccess: " + recipientUid + " -> " + visibleUid);
}
onChanged();
if (changed) {
onChanged();
}
return changed;
}

View File

@@ -2859,12 +2859,15 @@ public class PackageManagerService implements PackageSender, TestUtilityService
mDexOptHelper.performPackageDexOptUpgradeIfNeeded();
}
private void notifyPackageUseInternal(String packageName, int reason) {
long time = System.currentTimeMillis();
commitPackageStateMutation(null, packageName, packageState -> {
packageState.setLastPackageUsageTime(reason, time);
});
synchronized (mLock) {
final PackageSetting pkgSetting = mSettings.getPackageLPr(packageName);
if (pkgSetting == null) {
return;
}
pkgSetting.getPkgState().setLastPackageUsageTimeInMills(reason, time);
}
}
/*package*/ DexManager getDexManager() {

View File

@@ -79,7 +79,10 @@ public class PackageStateUnserialized {
return this;
}
getLastPackageUsageTimeInMills()[reason] = time;
mPackageSetting.onChanged();
// TODO(b/236180425): This method does not notify snapshot changes because it's called too
// frequently, causing too many re-takes. This should be moved to a separate data structure
// or merged with the general UsageStats to avoid tracking heavily mutated data in the
// package data snapshot.
return this;
}