diff options
| author | 2020-06-04 06:15:43 +0200 | |
|---|---|---|
| committer | 2020-06-05 13:34:07 +0200 | |
| commit | 6bb801ebb3483775e86dbcc1bcc621754f36e4fe (patch) | |
| tree | 7b5b29c1dfc534a8534e1ac4acfd651ab50d8408 | |
| parent | 38e3d616bc62fe5e0627f5b3878c824c4c174a16 (diff) | |
Use killUid() instead of killApplication().
killApplication() doesn't just kill the process, but also tears down its
entire task stack, meaning it won't be restarted when that task becomes
visible again. Use killUid() instead, which does have this property.
Bug: 157674306
Test: manual verification
Change-Id: I691d9fe96b64012c96e0595385bb482056b6c4d4
| -rw-r--r-- | services/core/java/com/android/server/StorageManagerService.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index b5aec8e401eb..8eb401a7ee55 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -4657,9 +4657,8 @@ class StorageManagerService extends IStorageManager.Stub private void killAppForOpChange(int code, int uid, String packageName) { final IActivityManager am = ActivityManager.getService(); try { - am.killApplication(packageName, - UserHandle.getAppId(uid), - UserHandle.USER_ALL, AppOpsManager.opToName(code) + " changed."); + am.killUid(UserHandle.getAppId(uid), UserHandle.USER_ALL, + AppOpsManager.opToName(code) + " changed."); } catch (RemoteException e) { } } @@ -4681,7 +4680,12 @@ class StorageManagerService extends IStorageManager.Stub // results in a bad UX, especially since the gid only gives access // to unreliable volumes, USB OTGs that are rarely mounted. The app // will get the external_storage gid on next organic restart. - killAppForOpChange(code, uid, packageName); + if (packageName != null) { + killAppForOpChange(code, uid, packageName); + } else { + // TODO(b/158283222) this can happen, figure out if we need + // to kill in this case as well. + } } return; case OP_LEGACY_STORAGE: |