summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chilun <chilunhuang@google.com> 2020-05-13 17:20:09 +0800
committer Chilun <chilunhuang@google.com> 2020-05-21 18:53:44 +0800
commit762f0493ca7241eef1fd9f67f2d00f3ff25c9bc3 (patch)
tree860e7968e32e14110b540d5569bbe054a947edae
parent47059f7654a70ac69bd17b2a119801b9b3682c96 (diff)
Get the instance count as the initial value
Developer may not be able to enable strict mode before creating any activities. The initial value of expected instance count may not always be 1. This CL use the instance count from InstanceTracker as the initial value. Bug: 152348723 Test: atest ActivityLeakTests atest NexusLauncherTests Change-Id: I8d34c87748deac72cf8b6e5cc247029901bbffb3
-rw-r--r--core/java/android/os/StrictMode.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index 02b822a99f2a..772845d4e683 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -817,6 +817,9 @@ public final class StrictMode {
/** @hide */
public @NonNull Builder permitActivityLeaks() {
+ synchronized (StrictMode.class) {
+ sExpectedActivityInstanceCount.clear();
+ }
return disable(DETECT_VM_ACTIVITY_LEAKS);
}
@@ -2586,8 +2589,10 @@ public final class StrictMode {
return;
}
+ // Use the instance count from InstanceTracker as initial value.
Integer expected = sExpectedActivityInstanceCount.get(klass);
- Integer newExpected = expected == null ? 1 : expected + 1;
+ Integer newExpected =
+ expected == null ? InstanceTracker.getInstanceCount(klass) + 1 : expected + 1;
sExpectedActivityInstanceCount.put(klass, newExpected);
}
}