diff options
| -rw-r--r-- | services/core/java/com/android/server/am/AppRestrictionController.java | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/am/AppRestrictionController.java b/services/core/java/com/android/server/am/AppRestrictionController.java index ef015ee9d743..117221f6e1f3 100644 --- a/services/core/java/com/android/server/am/AppRestrictionController.java +++ b/services/core/java/com/android/server/am/AppRestrictionController.java @@ -334,6 +334,8 @@ public final class AppRestrictionController { final ActivityManagerService mActivityManagerService; + private volatile boolean mLockedBootCompleted = false; + static final int TRACKER_TYPE_UNKNOWN = 0; static final int TRACKER_TYPE_BATTERY = 1; static final int TRACKER_TYPE_BATTERY_EXEMPTION = 2; @@ -1721,8 +1723,10 @@ public final class AppRestrictionController { level = RESTRICTION_LEVEL_EXEMPTED; break; case STANDBY_BUCKET_NEVER: - level = RESTRICTION_LEVEL_BACKGROUND_RESTRICTED; - break; + if (!android.app.Flags.appRestrictionsApi()) { + level = RESTRICTION_LEVEL_BACKGROUND_RESTRICTED; + break; + } case STANDBY_BUCKET_ACTIVE: case STANDBY_BUCKET_WORKING_SET: case STANDBY_BUCKET_FREQUENT: @@ -1802,7 +1806,9 @@ public final class AppRestrictionController { case STANDBY_BUCKET_EXEMPTED: return RESTRICTION_LEVEL_EXEMPTED; case STANDBY_BUCKET_NEVER: - return RESTRICTION_LEVEL_BACKGROUND_RESTRICTED; + if (!android.app.Flags.appRestrictionsApi()) { + return RESTRICTION_LEVEL_BACKGROUND_RESTRICTED; + } case STANDBY_BUCKET_ACTIVE: case STANDBY_BUCKET_WORKING_SET: case STANDBY_BUCKET_FREQUENT: @@ -2214,7 +2220,8 @@ public final class AppRestrictionController { } } - if (doItNow && android.app.Flags.appRestrictionsApi()) { + if (doItNow && android.app.Flags.appRestrictionsApi() + && curLevel != RESTRICTION_LEVEL_UNKNOWN) { logAppBackgroundRestrictionInfo(pkgName, uid, curLevel, level, trackerInfo, reason); } @@ -2308,6 +2315,9 @@ public final class AppRestrictionController { private void handleAppStandbyBucketChanged(int bucket, String packageName, @UserIdInt int userId) { + // Ignore spurious changes to standby bucket during early boot + if (android.app.Flags.appRestrictionsApi() && !mLockedBootCompleted) return; + final int uid = mInjector.getPackageManagerInternal().getPackageUid( packageName, STOCK_PM_FLAGS, userId); final Pair<Integer, TrackerInfo> levelTypePair = calcAppRestrictionLevel( @@ -3391,6 +3401,7 @@ public final class AppRestrictionController { for (int i = 0, size = mAppStateTrackers.size(); i < size; i++) { mAppStateTrackers.get(i).onLockedBootCompleted(); } + mLockedBootCompleted = true; } boolean isBgAutoRestrictedBucketFeatureFlagEnabled() { |