Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eec17d59 authored by Xin Guan's avatar Xin Guan Committed by Android (Google) Code Review
Browse files

Merge "Avoid app idle check on boot." into main

parents 14d9971f d4dae380
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ java_library {
        "modules-utils-fastxmlserializer",
        "service-jobscheduler-alarm.flags-aconfig-java",
        "service-jobscheduler-job.flags-aconfig-java",
        "service-jobscheduler-appidle.flags-aconfig-java",
    ],

    // Rename classes shared with the framework
+13 −0
Original line number Diff line number Diff line
@@ -42,3 +42,16 @@ java_aconfig_library {
    name: "service-jobscheduler-alarm.flags-aconfig-java",
    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",
}
+14 −0
Original line number 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
    }
}
+7 −1
Original line number Diff line number Diff line
@@ -788,7 +788,13 @@ public class AppIdleHistory {
                        }
                        appUsageHistory.nextEstimatedLaunchTime = getLongValue(parser,
                                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;
                        }
                        userHistory.put(packageName, appUsageHistory);

                        if (version >= XML_VERSION_ADD_BUCKET_EXPIRY_TIMES) {
+18 −6
Original line number Diff line number Diff line
@@ -707,7 +707,7 @@ public class AppStandbyController
                initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM);
            }

            if (mPendingOneTimeCheckIdleStates) {
            if (!Flags.avoidIdleCheck() && mPendingOneTimeCheckIdleStates) {
                postOneTimeCheckIdleStates();
            }

@@ -1021,7 +1021,7 @@ public class AppStandbyController
                                        == REASON_SUB_DEFAULT_APP_RESTORED)) {
                            newBucket = getBucketForLocked(packageName, userId, elapsedRealtime);
                            if (DEBUG) {
                                Slog.d(TAG, "Evaluated AOSP newBucket = "
                                Slog.d(TAG, "Evaluated " + packageName + " newBucket = "
                                        + standbyBucketToString(newBucket));
                            }
                            reason = REASON_MAIN_TIMEOUT;
@@ -1990,9 +1990,11 @@ public class AppStandbyController
            }
        }
        if (android.app.admin.flags.Flags.disallowUserControlBgUsageFix()) {
            if (!Flags.avoidIdleCheck()) {
                postCheckIdleStates(userId);
            }
        }
    }

    @Override
    public void onAdminDataAvailable() {
@@ -2392,11 +2394,16 @@ public class AppStandbyController
            final boolean isHeadLess = !systemLauncherActivities.contains(pkg);

            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,
                                    UserHandle.USER_SYSTEM, -1, pkg)
                            .sendToTarget();
                }
            }
        }
        final long end = SystemClock.uptimeMillis();
        Slog.d(TAG, "Loaded headless system app cache in " + (end - start) + " ms:"
                + " appIdleEnabled=" + mAppIdleEnabled);
@@ -2438,6 +2445,11 @@ public class AppStandbyController

    @Override
    public void dumpState(String[] args, PrintWriter pw) {
        pw.println("Flags: ");
        pw.println("    " + Flags.FLAG_AVOID_IDLE_CHECK
                + ": " + Flags.avoidIdleCheck());
        pw.println();

        synchronized (mCarrierPrivilegedLock) {
            pw.println("Carrier privileged apps (have=" + mHaveCarrierPrivilegedApps
                    + "): " + mCarrierPrivilegedApps);
Loading