diff options
| -rw-r--r-- | services/core/java/com/android/server/am/AnrHelper.java | 8 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/am/AnrHelperTest.java | 3 |
2 files changed, 9 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/am/AnrHelper.java b/services/core/java/com/android/server/am/AnrHelper.java index e0a224629174..9fc0bf920969 100644 --- a/services/core/java/com/android/server/am/AnrHelper.java +++ b/services/core/java/com/android/server/am/AnrHelper.java @@ -63,6 +63,11 @@ class AnrHelper { private static final long CONSECUTIVE_ANR_TIME_MS = TimeUnit.MINUTES.toMillis(2); /** + * Time to wait before taking dumps for other processes to reduce load at boot time. + */ + private static final long SELF_ONLY_AFTER_BOOT_MS = TimeUnit.MINUTES.toMillis(10); + + /** * The keep alive time for the threads in the helper threadpool executor */ private static final int DEFAULT_THREAD_KEEP_ALIVE_SECOND = 10; @@ -231,7 +236,8 @@ class AnrHelper { // If there are many ANR at the same time, the latency may be larger. // If the latency is too large, the stack trace might not be meaningful. final long reportLatency = startTime - r.mTimestamp; - final boolean onlyDumpSelf = reportLatency > EXPIRED_REPORT_TIME_MS; + final boolean onlyDumpSelf = reportLatency > EXPIRED_REPORT_TIME_MS + || startTime < SELF_ONLY_AFTER_BOOT_MS; r.appNotResponding(onlyDumpSelf); final long endTime = SystemClock.uptimeMillis(); Slog.d(TAG, "Completed ANR of " + r.mApp.processName + " in " diff --git a/services/tests/servicestests/src/com/android/server/am/AnrHelperTest.java b/services/tests/servicestests/src/com/android/server/am/AnrHelperTest.java index c0051c6c9e17..eee37525ee37 100644 --- a/services/tests/servicestests/src/com/android/server/am/AnrHelperTest.java +++ b/services/tests/servicestests/src/com/android/server/am/AnrHelperTest.java @@ -133,7 +133,8 @@ public class AnrHelperTest { verify(mAnrApp.mErrorState, timeout(TIMEOUT_MS)).appNotResponding( eq(activityShortComponentName), eq(appInfo), eq(parentShortComponentName), eq(parentProcess), eq(aboveSystem), eq(timeoutRecord), eq(mAuxExecutorService), - eq(false) /* onlyDumpSelf */, eq(false) /*isContinuousAnr*/, eq(mEarlyDumpFuture)); + anyBoolean() /* onlyDumpSelf */, eq(false) /*isContinuousAnr*/, + eq(mEarlyDumpFuture)); } @Test |