am d4ef34ce: am 512141d5: Merge "Respect DONT_KILL_APP flag when bringing down a disabled service." into mnc-dev

* commit 'd4ef34ce8d9cfb351e1a063ce2ff354ee0b9c13b':
  Respect DONT_KILL_APP flag when bringing down a disabled service.
This commit is contained in:
Wale Ogunwale
2015-09-03 18:14:13 +00:00
committed by Android Git Automerger
2 changed files with 13 additions and 10 deletions

View File

@@ -2085,7 +2085,8 @@ public final class ActiveServices {
}
private boolean collectPackageServicesLocked(String packageName, Set<String> filterByClasses,
boolean evenPersistent, boolean doit, ArrayMap<ComponentName, ServiceRecord> services) {
boolean evenPersistent, boolean doit, boolean killProcess,
ArrayMap<ComponentName, ServiceRecord> services) {
boolean didSomething = false;
for (int i = services.size() - 1; i >= 0; i--) {
ServiceRecord service = services.valueAt(i);
@@ -2101,7 +2102,7 @@ public final class ActiveServices {
didSomething = true;
Slog.i(TAG, " Force stopping service " + service);
if (service.app != null) {
service.app.removed = true;
service.app.removed = killProcess;
if (!service.app.persistent) {
service.app.services.remove(service);
}
@@ -2118,7 +2119,7 @@ public final class ActiveServices {
}
boolean bringDownDisabledPackageServicesLocked(String packageName, Set<String> filterByClasses,
int userId, boolean evenPersistent, boolean doit) {
int userId, boolean evenPersistent, boolean killProcess, boolean doit) {
boolean didSomething = false;
if (mTmpCollectionResults != null) {
@@ -2128,7 +2129,7 @@ public final class ActiveServices {
if (userId == UserHandle.USER_ALL) {
for (int i = mServiceMap.size() - 1; i >= 0; i--) {
didSomething |= collectPackageServicesLocked(packageName, filterByClasses,
evenPersistent, doit, mServiceMap.valueAt(i).mServicesByName);
evenPersistent, doit, killProcess, mServiceMap.valueAt(i).mServicesByName);
if (!doit && didSomething) {
return true;
}
@@ -2138,7 +2139,7 @@ public final class ActiveServices {
if (smap != null) {
ArrayMap<ComponentName, ServiceRecord> items = smap.mServicesByName;
didSomething = collectPackageServicesLocked(packageName, filterByClasses,
evenPersistent, doit, items);
evenPersistent, doit, killProcess, items);
}
}

View File

@@ -5598,7 +5598,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
private void cleanupDisabledPackageComponentsLocked(
String packageName, int userId, String[] changedClasses) {
String packageName, int userId, boolean killProcess, String[] changedClasses) {
Set<String> disabledClasses = null;
boolean packageDisabled = false;
@@ -5668,7 +5668,7 @@ public final class ActivityManagerService extends ActivityManagerNative
// Clean-up disabled services.
mServices.bringDownDisabledPackageServicesLocked(
packageName, disabledClasses, userId, false, true);
packageName, disabledClasses, userId, false, killProcess, true);
// Clean-up disabled providers.
ArrayList<ContentProviderRecord> providers = new ArrayList<>();
@@ -5753,7 +5753,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
if (mServices.bringDownDisabledPackageServicesLocked(
packageName, null, userId, evenPersistent, doit)) {
packageName, null, userId, evenPersistent, true, doit)) {
if (!doit) {
return true;
}
@@ -16626,7 +16626,9 @@ public final class ActivityManagerService extends ActivityManagerNative
boolean removed = Intent.ACTION_PACKAGE_REMOVED.equals(action);
boolean fullUninstall = removed &&
!intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
if (!intent.getBooleanExtra(Intent.EXTRA_DONT_KILL_APP, false)) {
final boolean killProcess =
!intent.getBooleanExtra(Intent.EXTRA_DONT_KILL_APP, false);
if (killProcess) {
forceStopPackageLocked(ssp, UserHandle.getAppId(
intent.getIntExtra(Intent.EXTRA_UID, -1)),
false, true, true, false, fullUninstall, userId,
@@ -16646,7 +16648,7 @@ public final class ActivityManagerService extends ActivityManagerNative
mBatteryStatsService.notePackageUninstalled(ssp);
}
} else {
cleanupDisabledPackageComponentsLocked(ssp, userId,
cleanupDisabledPackageComponentsLocked(ssp, userId, killProcess,
intent.getStringArrayExtra(
Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST));
}