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
This commit is contained in:
Amith Yamasani
2016-03-14 11:55:38 -07:00
parent 79936ddda4
commit bdda1e076e
2 changed files with 18 additions and 0 deletions

View File

@@ -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)

View File

@@ -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) {