Merge "Load headless system app cache on boot." into rvc-dev am: 9dace7651b am: fc1b868d15

Change-Id: I8367ecaf6d8dd652fea0c3fb360cd6311b14f51e
This commit is contained in:
Kweku Adams
2020-05-29 23:13:21 +00:00
committed by Automerger Merge Worker

View File

@@ -447,6 +447,8 @@ public class AppStandbyController implements AppStandbyInternal {
userFileExists = mAppIdleHistory.userFileExists(UserHandle.USER_SYSTEM);
}
loadHeadlessSystemAppCache();
if (mPendingInitializeDefaults || !userFileExists) {
initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM);
}
@@ -1670,6 +1672,8 @@ public class AppStandbyController implements AppStandbyInternal {
clearCarrierPrivilegedApps();
// ACTION_PACKAGE_ADDED is called even for system app downgrades.
evaluateSystemAppException(pkgName, userId);
mHandler.obtainMessage(MSG_CHECK_PACKAGE_IDLE_STATE, userId, -1, pkgName)
.sendToTarget();
}
if ((Intent.ACTION_PACKAGE_REMOVED.equals(action) ||
Intent.ACTION_PACKAGE_ADDED.equals(action))) {
@@ -1684,7 +1688,7 @@ public class AppStandbyController implements AppStandbyInternal {
private void evaluateSystemAppException(String packageName, int userId) {
if (!mSystemServicesReady) {
// The app will be evaluated in initializeDefaultsForSystemApps() when possible.
// The app will be evaluated in when services are ready.
return;
}
try {
@@ -1710,6 +1714,7 @@ public class AppStandbyController implements AppStandbyInternal {
}
}
/** Call on a system version update to temporarily reset system app buckets. */
@Override
public void initializeDefaultsForSystemApps(int userId) {
if (!mSystemServicesReady) {
@@ -1721,7 +1726,7 @@ public class AppStandbyController implements AppStandbyInternal {
+ "appIdleEnabled=" + mAppIdleEnabled);
final long elapsedRealtime = mInjector.elapsedRealtime();
List<PackageInfo> packages = mPackageManager.getInstalledPackagesAsUser(
PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
PackageManager.MATCH_DISABLED_COMPONENTS,
userId);
final int packageCount = packages.size();
synchronized (mAppIdleLock) {
@@ -1734,8 +1739,6 @@ public class AppStandbyController implements AppStandbyInternal {
mAppIdleHistory.reportUsage(packageName, userId, STANDBY_BUCKET_ACTIVE,
REASON_SUB_USAGE_SYSTEM_UPDATE, 0,
elapsedRealtime + mSystemUpdateUsageTimeoutMillis);
evaluateSystemAppException(pi);
}
}
// Immediately persist defaults to disk
@@ -1743,6 +1746,18 @@ public class AppStandbyController implements AppStandbyInternal {
}
}
/** Call on a system update to temporarily reset system app buckets. */
private void loadHeadlessSystemAppCache() {
Slog.d(TAG, "Loading headless system app cache. appIdleEnabled=" + mAppIdleEnabled);
final List<PackageInfo> packages = mPackageManager.getInstalledPackagesAsUser(
PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
UserHandle.USER_SYSTEM);
final int packageCount = packages.size();
for (int i = 0; i < packageCount; i++) {
evaluateSystemAppException(packages.get(i));
}
}
@Override
public void postReportContentProviderUsage(String name, String packageName, int userId) {
SomeArgs args = SomeArgs.obtain();
@@ -1835,6 +1850,14 @@ public class AppStandbyController implements AppStandbyInternal {
pw.print("mScreenThresholds="); pw.println(Arrays.toString(mAppStandbyScreenThresholds));
pw.print("mElapsedThresholds="); pw.println(Arrays.toString(mAppStandbyElapsedThresholds));
pw.println();
pw.println("mHeadlessSystemApps=[");
for (int i = mHeadlessSystemApps.size() - 1; i >= 0; --i) {
pw.print(mHeadlessSystemApps.keyAt(i));
pw.println(",");
}
pw.println("]");
pw.println();
}
/**