diff options
| author | 2009-08-17 16:57:03 -0700 | |
|---|---|---|
| committer | 2009-08-17 17:21:56 -0700 | |
| commit | d9d2576017fadcf47589b54e8ee198f48cc19352 (patch) | |
| tree | 7d18abbb1724f4aeab9786707397b1863ae8b9ce | |
| parent | ace6a5cfc0d14a909b4b95bdfe16609188125baf (diff) | |
Remove dead locks in system process when installing packages
| -rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 04bfae6152a8..14c10b94dcf7 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -924,6 +924,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen static final int RESUME_TOP_ACTIVITY_MSG = 19; static final int PROC_START_TIMEOUT_MSG = 20; static final int DO_PENDING_ACTIVITY_LAUNCHES_MSG = 21; + static final int KILL_APPLICATION_MSG = 22; AlertDialog mUidAlert; @@ -1153,6 +1154,14 @@ public final class ActivityManagerService extends ActivityManagerNative implemen doPendingActivityLaunchesLocked(true); } } + case KILL_APPLICATION_MSG: { + synchronized (ActivityManagerService.this) { + int uid = msg.arg1; + boolean restart = (msg.arg2 == 1); + String pkg = (String) msg.obj; + uninstallPackageLocked(pkg, uid, restart); + } + } break; } } }; @@ -4804,7 +4813,12 @@ public final class ActivityManagerService extends ActivityManagerNative implemen int callerUid = Binder.getCallingUid(); // Only the system server can kill an application if (callerUid == Process.SYSTEM_UID) { - uninstallPackageLocked(pkg, uid, false); + // Post an aysnc message to kill the application + Message msg = mHandler.obtainMessage(KILL_APPLICATION_MSG); + msg.arg1 = uid; + msg.arg2 = 0; + msg.obj = pkg; + mHandler.dispatchMessage(msg); } else { throw new SecurityException(callerUid + " cannot kill pkg: " + pkg); |