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:
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user