diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 8de4ee62561d5..0570f6cdfa77b 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -5620,10 +5620,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { mTaskSupervisor.endDeferResume(); } - if (wpc.isInstrumenting()) { - finishInstrumentationCallback.run(); - } - if (!restarting && hasVisibleActivities) { deferWindowLayout(); try { @@ -5640,6 +5636,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } } + if (wpc.isInstrumenting()) { + finishInstrumentationCallback.run(); + } } @Override @@ -6139,6 +6138,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { public boolean handleAppCrashInActivityController(String processName, int pid, String shortMsg, String longMsg, long timeMillis, String stackTrace, Runnable killCrashingAppCallback) { + Runnable targetRunnable = null; synchronized (mGlobalLock) { if (mController == null) { return false; @@ -6147,15 +6147,18 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { try { if (!mController.appCrashed(processName, pid, shortMsg, longMsg, timeMillis, stackTrace)) { - killCrashingAppCallback.run(); - return true; + targetRunnable = killCrashingAppCallback; } } catch (RemoteException e) { mController = null; Watchdog.getInstance().setActivityController(null); } - return false; } + if (targetRunnable != null) { + targetRunnable.run(); + return true; + } + return false; } @Override