summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java31
1 files changed, 27 insertions, 4 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
index 40328b300cee..280a6870a5e1 100644
--- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
+++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
@@ -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();
}
/**