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

Commit bdda1e07 authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Clear app idle state for removed packages

On a package being added or removed, remove
app idle state for the app.

Bug: 27570398
Bug: 26182816
Change-Id: I14bdc1f951bbd99bda8111bea56f8c9dda04148d
parent 79936ddd
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -274,6 +274,11 @@ public class AppIdleHistory {
                - (idle ? mScreenOnTimeThreshold : 0) - 1000 /* just a second more */;
    }

    public void clearUsageLocked(String packageName, int userId) {
        ArrayMap<String, PackageHistory> userHistory = getUserHistoryLocked(userId);
        userHistory.remove(packageName);
    }

    private boolean hasPassedThresholdsLocked(PackageHistory packageHistory, long elapsedRealtime) {
        return (packageHistory.lastUsedScreenTime
                    <= getScreenOnTimeLocked(elapsedRealtime) - mScreenOnTimeThreshold)
+13 −0
Original line number Diff line number Diff line
@@ -180,6 +180,7 @@ public class UsageStatsService extends SystemService implements
        IntentFilter packageFilter = new IntentFilter();
        packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
        packageFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        packageFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        packageFilter.addDataScheme("package");

        getContext().registerReceiverAsUser(new PackageReceiver(), UserHandle.ALL, packageFilter,
@@ -266,6 +267,12 @@ public class UsageStatsService extends SystemService implements
                    || Intent.ACTION_PACKAGE_CHANGED.equals(action)) {
                clearCarrierPrivilegedApps();
            }
            if ((Intent.ACTION_PACKAGE_REMOVED.equals(action) ||
                    Intent.ACTION_PACKAGE_ADDED.equals(action))
                    && !intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
                clearAppIdleForPackage(intent.getData().getSchemeSpecificPart(),
                        getSendingUserId());
            }
        }
    }

@@ -332,6 +339,12 @@ public class UsageStatsService extends SystemService implements
        }
    }

    void clearAppIdleForPackage(String packageName, int userId) {
        synchronized (mLock) {
            mAppIdleHistory.clearUsageLocked(packageName, userId);
        }
    }

    private void cleanUpRemovedUsersLocked() {
        final List<UserInfo> users = mUserManager.getUsers(true);
        if (users == null || users.size() == 0) {