Loading apex/jobscheduler/service/Android.bp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -33,6 +33,7 @@ java_library { "modules-utils-fastxmlserializer", "modules-utils-fastxmlserializer", "service-jobscheduler-alarm.flags-aconfig-java", "service-jobscheduler-alarm.flags-aconfig-java", "service-jobscheduler-job.flags-aconfig-java", "service-jobscheduler-job.flags-aconfig-java", "service-jobscheduler-appidle.flags-aconfig-java", ], ], // Rename classes shared with the framework // Rename classes shared with the framework Loading apex/jobscheduler/service/aconfig/Android.bp +13 −0 Original line number Original line Diff line number Diff line Loading @@ -42,3 +42,16 @@ java_aconfig_library { name: "service-jobscheduler-alarm.flags-aconfig-java", name: "service-jobscheduler-alarm.flags-aconfig-java", aconfig_declarations: "alarm_flags", aconfig_declarations: "alarm_flags", } } // App Idle aconfig_declarations { name: "app_idle_flags", package: "com.android.server.usage", container: "system", srcs: ["app_idle.aconfig"], } java_aconfig_library { name: "service-jobscheduler-appidle.flags-aconfig-java", aconfig_declarations: "app_idle_flags", } apex/jobscheduler/service/aconfig/app_idle.aconfig 0 → 100644 +14 −0 Original line number Original line Diff line number Diff line package: "com.android.server.usage" container: "system" flag { name: "avoid_idle_check" namespace: "backstage_power" description: "Postpone app idle check after boot completed" is_fixed_read_only: true bug: "337864590" metadata { purpose: PURPOSE_BUGFIX } } apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java +7 −1 Original line number Original line Diff line number Diff line Loading @@ -788,7 +788,13 @@ public class AppIdleHistory { } } appUsageHistory.nextEstimatedLaunchTime = getLongValue(parser, appUsageHistory.nextEstimatedLaunchTime = getLongValue(parser, ATTR_NEXT_ESTIMATED_APP_LAUNCH_TIME, 0); ATTR_NEXT_ESTIMATED_APP_LAUNCH_TIME, 0); if (Flags.avoidIdleCheck()) { // Set lastInformedBucket to the same value with the currentBucket // it should have already been informed. appUsageHistory.lastInformedBucket = appUsageHistory.currentBucket; } else { appUsageHistory.lastInformedBucket = -1; appUsageHistory.lastInformedBucket = -1; } userHistory.put(packageName, appUsageHistory); userHistory.put(packageName, appUsageHistory); if (version >= XML_VERSION_ADD_BUCKET_EXPIRY_TIMES) { if (version >= XML_VERSION_ADD_BUCKET_EXPIRY_TIMES) { Loading apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +18 −6 Original line number Original line Diff line number Diff line Loading @@ -707,7 +707,7 @@ public class AppStandbyController initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM); initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM); } } if (mPendingOneTimeCheckIdleStates) { if (!Flags.avoidIdleCheck() && mPendingOneTimeCheckIdleStates) { postOneTimeCheckIdleStates(); postOneTimeCheckIdleStates(); } } Loading Loading @@ -1021,7 +1021,7 @@ public class AppStandbyController == REASON_SUB_DEFAULT_APP_RESTORED)) { == REASON_SUB_DEFAULT_APP_RESTORED)) { newBucket = getBucketForLocked(packageName, userId, elapsedRealtime); newBucket = getBucketForLocked(packageName, userId, elapsedRealtime); if (DEBUG) { if (DEBUG) { Slog.d(TAG, "Evaluated AOSP newBucket = " Slog.d(TAG, "Evaluated " + packageName + " newBucket = " + standbyBucketToString(newBucket)); + standbyBucketToString(newBucket)); } } reason = REASON_MAIN_TIMEOUT; reason = REASON_MAIN_TIMEOUT; Loading Loading @@ -1990,9 +1990,11 @@ public class AppStandbyController } } } } if (android.app.admin.flags.Flags.disallowUserControlBgUsageFix()) { if (android.app.admin.flags.Flags.disallowUserControlBgUsageFix()) { if (!Flags.avoidIdleCheck()) { postCheckIdleStates(userId); postCheckIdleStates(userId); } } } } } @Override @Override public void onAdminDataAvailable() { public void onAdminDataAvailable() { Loading Loading @@ -2392,11 +2394,16 @@ public class AppStandbyController final boolean isHeadLess = !systemLauncherActivities.contains(pkg); final boolean isHeadLess = !systemLauncherActivities.contains(pkg); if (updateHeadlessSystemAppCache(pkg, isHeadLess)) { if (updateHeadlessSystemAppCache(pkg, isHeadLess)) { if (!Flags.avoidIdleCheck()) { // Checking idle state for the each individual headless system app // during the boot up is not necessary, a full idle check for all // usres will be scheduled after boot completed. mHandler.obtainMessage(MSG_CHECK_PACKAGE_IDLE_STATE, mHandler.obtainMessage(MSG_CHECK_PACKAGE_IDLE_STATE, UserHandle.USER_SYSTEM, -1, pkg) UserHandle.USER_SYSTEM, -1, pkg) .sendToTarget(); .sendToTarget(); } } } } } final long end = SystemClock.uptimeMillis(); final long end = SystemClock.uptimeMillis(); Slog.d(TAG, "Loaded headless system app cache in " + (end - start) + " ms:" Slog.d(TAG, "Loaded headless system app cache in " + (end - start) + " ms:" + " appIdleEnabled=" + mAppIdleEnabled); + " appIdleEnabled=" + mAppIdleEnabled); Loading Loading @@ -2438,6 +2445,11 @@ public class AppStandbyController @Override @Override public void dumpState(String[] args, PrintWriter pw) { public void dumpState(String[] args, PrintWriter pw) { pw.println("Flags: "); pw.println(" " + Flags.FLAG_AVOID_IDLE_CHECK + ": " + Flags.avoidIdleCheck()); pw.println(); synchronized (mCarrierPrivilegedLock) { synchronized (mCarrierPrivilegedLock) { pw.println("Carrier privileged apps (have=" + mHaveCarrierPrivilegedApps pw.println("Carrier privileged apps (have=" + mHaveCarrierPrivilegedApps + "): " + mCarrierPrivilegedApps); + "): " + mCarrierPrivilegedApps); Loading Loading
apex/jobscheduler/service/Android.bp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -33,6 +33,7 @@ java_library { "modules-utils-fastxmlserializer", "modules-utils-fastxmlserializer", "service-jobscheduler-alarm.flags-aconfig-java", "service-jobscheduler-alarm.flags-aconfig-java", "service-jobscheduler-job.flags-aconfig-java", "service-jobscheduler-job.flags-aconfig-java", "service-jobscheduler-appidle.flags-aconfig-java", ], ], // Rename classes shared with the framework // Rename classes shared with the framework Loading
apex/jobscheduler/service/aconfig/Android.bp +13 −0 Original line number Original line Diff line number Diff line Loading @@ -42,3 +42,16 @@ java_aconfig_library { name: "service-jobscheduler-alarm.flags-aconfig-java", name: "service-jobscheduler-alarm.flags-aconfig-java", aconfig_declarations: "alarm_flags", aconfig_declarations: "alarm_flags", } } // App Idle aconfig_declarations { name: "app_idle_flags", package: "com.android.server.usage", container: "system", srcs: ["app_idle.aconfig"], } java_aconfig_library { name: "service-jobscheduler-appidle.flags-aconfig-java", aconfig_declarations: "app_idle_flags", }
apex/jobscheduler/service/aconfig/app_idle.aconfig 0 → 100644 +14 −0 Original line number Original line Diff line number Diff line package: "com.android.server.usage" container: "system" flag { name: "avoid_idle_check" namespace: "backstage_power" description: "Postpone app idle check after boot completed" is_fixed_read_only: true bug: "337864590" metadata { purpose: PURPOSE_BUGFIX } }
apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java +7 −1 Original line number Original line Diff line number Diff line Loading @@ -788,7 +788,13 @@ public class AppIdleHistory { } } appUsageHistory.nextEstimatedLaunchTime = getLongValue(parser, appUsageHistory.nextEstimatedLaunchTime = getLongValue(parser, ATTR_NEXT_ESTIMATED_APP_LAUNCH_TIME, 0); ATTR_NEXT_ESTIMATED_APP_LAUNCH_TIME, 0); if (Flags.avoidIdleCheck()) { // Set lastInformedBucket to the same value with the currentBucket // it should have already been informed. appUsageHistory.lastInformedBucket = appUsageHistory.currentBucket; } else { appUsageHistory.lastInformedBucket = -1; appUsageHistory.lastInformedBucket = -1; } userHistory.put(packageName, appUsageHistory); userHistory.put(packageName, appUsageHistory); if (version >= XML_VERSION_ADD_BUCKET_EXPIRY_TIMES) { if (version >= XML_VERSION_ADD_BUCKET_EXPIRY_TIMES) { Loading
apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +18 −6 Original line number Original line Diff line number Diff line Loading @@ -707,7 +707,7 @@ public class AppStandbyController initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM); initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM); } } if (mPendingOneTimeCheckIdleStates) { if (!Flags.avoidIdleCheck() && mPendingOneTimeCheckIdleStates) { postOneTimeCheckIdleStates(); postOneTimeCheckIdleStates(); } } Loading Loading @@ -1021,7 +1021,7 @@ public class AppStandbyController == REASON_SUB_DEFAULT_APP_RESTORED)) { == REASON_SUB_DEFAULT_APP_RESTORED)) { newBucket = getBucketForLocked(packageName, userId, elapsedRealtime); newBucket = getBucketForLocked(packageName, userId, elapsedRealtime); if (DEBUG) { if (DEBUG) { Slog.d(TAG, "Evaluated AOSP newBucket = " Slog.d(TAG, "Evaluated " + packageName + " newBucket = " + standbyBucketToString(newBucket)); + standbyBucketToString(newBucket)); } } reason = REASON_MAIN_TIMEOUT; reason = REASON_MAIN_TIMEOUT; Loading Loading @@ -1990,9 +1990,11 @@ public class AppStandbyController } } } } if (android.app.admin.flags.Flags.disallowUserControlBgUsageFix()) { if (android.app.admin.flags.Flags.disallowUserControlBgUsageFix()) { if (!Flags.avoidIdleCheck()) { postCheckIdleStates(userId); postCheckIdleStates(userId); } } } } } @Override @Override public void onAdminDataAvailable() { public void onAdminDataAvailable() { Loading Loading @@ -2392,11 +2394,16 @@ public class AppStandbyController final boolean isHeadLess = !systemLauncherActivities.contains(pkg); final boolean isHeadLess = !systemLauncherActivities.contains(pkg); if (updateHeadlessSystemAppCache(pkg, isHeadLess)) { if (updateHeadlessSystemAppCache(pkg, isHeadLess)) { if (!Flags.avoidIdleCheck()) { // Checking idle state for the each individual headless system app // during the boot up is not necessary, a full idle check for all // usres will be scheduled after boot completed. mHandler.obtainMessage(MSG_CHECK_PACKAGE_IDLE_STATE, mHandler.obtainMessage(MSG_CHECK_PACKAGE_IDLE_STATE, UserHandle.USER_SYSTEM, -1, pkg) UserHandle.USER_SYSTEM, -1, pkg) .sendToTarget(); .sendToTarget(); } } } } } final long end = SystemClock.uptimeMillis(); final long end = SystemClock.uptimeMillis(); Slog.d(TAG, "Loaded headless system app cache in " + (end - start) + " ms:" Slog.d(TAG, "Loaded headless system app cache in " + (end - start) + " ms:" + " appIdleEnabled=" + mAppIdleEnabled); + " appIdleEnabled=" + mAppIdleEnabled); Loading Loading @@ -2438,6 +2445,11 @@ public class AppStandbyController @Override @Override public void dumpState(String[] args, PrintWriter pw) { public void dumpState(String[] args, PrintWriter pw) { pw.println("Flags: "); pw.println(" " + Flags.FLAG_AVOID_IDLE_CHECK + ": " + Flags.avoidIdleCheck()); pw.println(); synchronized (mCarrierPrivilegedLock) { synchronized (mCarrierPrivilegedLock) { pw.println("Carrier privileged apps (have=" + mHaveCarrierPrivilegedApps pw.println("Carrier privileged apps (have=" + mHaveCarrierPrivilegedApps + "): " + mCarrierPrivilegedApps); + "): " + mCarrierPrivilegedApps); Loading