Skip to content

Commit 9dace76

Browse files
kwadkoreAndroid (Google) Code Review
authored andcommitted
Merge "Load headless system app cache on boot." into rvc-dev
2 parents 725f9ce + c86da5f commit 9dace76

1 file changed

Lines changed: 27 additions & 4 deletions

File tree

apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,8 @@ public void onBootPhase(int phase) {
447447
userFileExists = mAppIdleHistory.userFileExists(UserHandle.USER_SYSTEM);
448448
}
449449

450+
loadHeadlessSystemAppCache();
451+
450452
if (mPendingInitializeDefaults || !userFileExists) {
451453
initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM);
452454
}
@@ -1670,6 +1672,8 @@ public void onReceive(Context context, Intent intent) {
16701672
clearCarrierPrivilegedApps();
16711673
// ACTION_PACKAGE_ADDED is called even for system app downgrades.
16721674
evaluateSystemAppException(pkgName, userId);
1675+
mHandler.obtainMessage(MSG_CHECK_PACKAGE_IDLE_STATE, userId, -1, pkgName)
1676+
.sendToTarget();
16731677
}
16741678
if ((Intent.ACTION_PACKAGE_REMOVED.equals(action) ||
16751679
Intent.ACTION_PACKAGE_ADDED.equals(action))) {
@@ -1684,7 +1688,7 @@ public void onReceive(Context context, Intent intent) {
16841688

16851689
private void evaluateSystemAppException(String packageName, int userId) {
16861690
if (!mSystemServicesReady) {
1687-
// The app will be evaluated in initializeDefaultsForSystemApps() when possible.
1691+
// The app will be evaluated in when services are ready.
16881692
return;
16891693
}
16901694
try {
@@ -1710,6 +1714,7 @@ private void evaluateSystemAppException(@Nullable PackageInfo pkgInfo) {
17101714
}
17111715
}
17121716

1717+
/** Call on a system version update to temporarily reset system app buckets. */
17131718
@Override
17141719
public void initializeDefaultsForSystemApps(int userId) {
17151720
if (!mSystemServicesReady) {
@@ -1721,7 +1726,7 @@ public void initializeDefaultsForSystemApps(int userId) {
17211726
+ "appIdleEnabled=" + mAppIdleEnabled);
17221727
final long elapsedRealtime = mInjector.elapsedRealtime();
17231728
List<PackageInfo> packages = mPackageManager.getInstalledPackagesAsUser(
1724-
PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
1729+
PackageManager.MATCH_DISABLED_COMPONENTS,
17251730
userId);
17261731
final int packageCount = packages.size();
17271732
synchronized (mAppIdleLock) {
@@ -1734,15 +1739,25 @@ public void initializeDefaultsForSystemApps(int userId) {
17341739
mAppIdleHistory.reportUsage(packageName, userId, STANDBY_BUCKET_ACTIVE,
17351740
REASON_SUB_USAGE_SYSTEM_UPDATE, 0,
17361741
elapsedRealtime + mSystemUpdateUsageTimeoutMillis);
1737-
1738-
evaluateSystemAppException(pi);
17391742
}
17401743
}
17411744
// Immediately persist defaults to disk
17421745
mAppIdleHistory.writeAppIdleTimes(userId);
17431746
}
17441747
}
17451748

1749+
/** Call on a system update to temporarily reset system app buckets. */
1750+
private void loadHeadlessSystemAppCache() {
1751+
Slog.d(TAG, "Loading headless system app cache. appIdleEnabled=" + mAppIdleEnabled);
1752+
final List<PackageInfo> packages = mPackageManager.getInstalledPackagesAsUser(
1753+
PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
1754+
UserHandle.USER_SYSTEM);
1755+
final int packageCount = packages.size();
1756+
for (int i = 0; i < packageCount; i++) {
1757+
evaluateSystemAppException(packages.get(i));
1758+
}
1759+
}
1760+
17461761
@Override
17471762
public void postReportContentProviderUsage(String name, String packageName, int userId) {
17481763
SomeArgs args = SomeArgs.obtain();
@@ -1835,6 +1850,14 @@ public void dumpState(String[] args, PrintWriter pw) {
18351850
pw.print("mScreenThresholds="); pw.println(Arrays.toString(mAppStandbyScreenThresholds));
18361851
pw.print("mElapsedThresholds="); pw.println(Arrays.toString(mAppStandbyElapsedThresholds));
18371852
pw.println();
1853+
1854+
pw.println("mHeadlessSystemApps=[");
1855+
for (int i = mHeadlessSystemApps.size() - 1; i >= 0; --i) {
1856+
pw.print(mHeadlessSystemApps.keyAt(i));
1857+
pw.println(",");
1858+
}
1859+
pw.println("]");
1860+
pw.println();
18381861
}
18391862

18401863
/**

0 commit comments

Comments
 (0)