From 58178f2fe4fb2fd2dba0504acff35f8ecc2e495c Mon Sep 17 00:00:00 2001 From: Andrii Kulian Date: Wed, 16 Mar 2016 13:44:56 -0700 Subject: Add additional logging for incorrect activity stop Print ActivityClientRecord state when ActivityThread#performStopActivityInner is called for already stopped activity. Bug: 25267624 Change-Id: I2b044e42d0188ef9eaf15422b6a05617ade802e2 --- core/java/android/app/Activity.java | 2 +- core/java/android/app/ActivityThread.java | 30 +++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 6b67b959064e..772dc9c72ecf 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -744,7 +744,7 @@ public class Activity extends ContextThemeWrapper Activity mParent; boolean mCalled; /*package*/ boolean mResumed; - private boolean mStopped; + /*package*/ boolean mStopped; boolean mFinished; boolean mStartedActivity; private boolean mDestroyed; diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 060ac5e578e4..93c668d10f15 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -379,6 +379,33 @@ public final class ActivityThread { ? "no component name" : componentName.toShortString()) + "}"; } + + public String getStateString() { + StringBuilder sb = new StringBuilder(); + sb.append("ActivityClientRecord{"); + sb.append("paused=").append(paused); + sb.append(", stopped=").append(stopped); + sb.append(", hideForNow=").append(hideForNow); + sb.append(", startsNotResumed=").append(startsNotResumed); + sb.append(", isForward=").append(isForward); + sb.append(", pendingConfigChanges=").append(pendingConfigChanges); + sb.append(", onlyLocalRequest=").append(onlyLocalRequest); + sb.append(", preserveWindow=").append(mPreserveWindow); + if (activity != null) { + sb.append(", Activity{"); + sb.append("resumed=").append(activity.mResumed); + sb.append(", stopped=").append(activity.mStopped); + sb.append(", finished=").append(activity.isFinishing()); + sb.append(", destroyed=").append(activity.isDestroyed()); + sb.append(", startedActivity=").append(activity.mStartedActivity); + sb.append(", temporaryPause=").append(activity.mTemporaryPause); + sb.append(", changingConfigurations=").append(activity.mChangingConfigurations); + sb.append(", visibleBehind=").append(activity.mVisibleBehind); + sb.append("}"); + } + sb.append("}"); + return sb.toString(); + } } final class ProviderClientRecord { @@ -3752,9 +3779,10 @@ public final class ActivityThread { return; } RuntimeException e = new RuntimeException( - "Performing stop of activity that is not resumed: " + "Performing stop of activity that is already stopped: " + r.intent.getComponent().toShortString()); Slog.e(TAG, e.getMessage(), e); + Slog.e(TAG, r.getStateString()); } if (info != null) { -- cgit v1.2.3-59-g8ed1b