diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ProcessList.java | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index f01305eab761..0d49e4cdc9d0 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -1681,7 +1681,8 @@ public final class ProcessList { public void killAppZygoteIfNeededLocked(AppZygote appZygote) { final ApplicationInfo appInfo = appZygote.getAppInfo(); ArrayList<ProcessRecord> zygoteProcesses = mAppZygoteProcesses.get(appZygote); - if (zygoteProcesses.size() == 0) { // Only remove if no longer in use now + if (zygoteProcesses != null && zygoteProcesses.size() == 0) { + // Only remove if no longer in use now mAppZygotes.remove(appInfo.processName, appInfo.uid); mAppZygoteProcesses.remove(appZygote); mAppIsolatedUidRangeAllocator.freeUidRangeLocked(appInfo); @@ -1703,6 +1704,7 @@ public final class ProcessList { ArrayList<ProcessRecord> zygoteProcesses = mAppZygoteProcesses.get(appZygote); zygoteProcesses.remove(app); if (zygoteProcesses.size() == 0) { + mService.mHandler.removeMessages(KILL_APP_ZYGOTE_MSG); Message msg = mService.mHandler.obtainMessage(KILL_APP_ZYGOTE_MSG); msg.obj = appZygote; mService.mHandler.sendMessageDelayed(msg, KILL_APP_ZYGOTE_DELAY_MS); |