From 564686e7d83d6aaf6238dec092423eab8fbeb9fc Mon Sep 17 00:00:00 2001 From: Zim Date: Wed, 7 Jun 2023 17:17:06 +0100 Subject: [PATCH] Instrument Service lifecycle events Added trace events with a 'Binder token' for Service lifecycle events dispatched from the system_server. We already have equivalent events with same 'Binder token' on the client side. This will enable us correlate the dispatch of the Service event with the handling in the app. Consequently allowing us to bulk anlayze Service lifecycle event latencies with attribution to a calling process. Test: Manual Bug: 285553040 Change-Id: Iafec54bcaa79af138290e092fb58aa9684584cac --- core/java/android/app/ActivityThread.java | 25 +++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 853528f908bbd..4a6fc9aa4a419 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -1110,6 +1110,10 @@ public final class ActivityThread extends ClientTransactionHandler s.token = token; s.info = info; + if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { + Trace.instant(Trace.TRACE_TAG_ACTIVITY_MANAGER, "scheduleCreateService. token=" + + token); + } sendMessage(H.CREATE_SERVICE, s); } @@ -1125,6 +1129,11 @@ public final class ActivityThread extends ClientTransactionHandler if (DEBUG_SERVICE) Slog.v(TAG, "scheduleBindService token=" + token + " intent=" + intent + " uid=" + Binder.getCallingUid() + " pid=" + Binder.getCallingPid()); + + if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { + Trace.instant(Trace.TRACE_TAG_ACTIVITY_MANAGER, "scheduleBindService. token=" + + token + " bindSeq=" + bindSeq); + } sendMessage(H.BIND_SERVICE, s); } @@ -1134,6 +1143,10 @@ public final class ActivityThread extends ClientTransactionHandler s.intent = intent; s.bindSeq = -1; + if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { + Trace.instant(Trace.TRACE_TAG_ACTIVITY_MANAGER, "scheduleUnbindService. token=" + + token); + } sendMessage(H.UNBIND_SERVICE, s); } @@ -1149,16 +1162,28 @@ public final class ActivityThread extends ClientTransactionHandler s.flags = ssa.flags; s.args = ssa.args; + if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { + Trace.instant(Trace.TRACE_TAG_ACTIVITY_MANAGER, "scheduleServiceArgs. token=" + + token + " startId=" + s.startId); + } sendMessage(H.SERVICE_ARGS, s); } } public final void scheduleStopService(IBinder token) { + if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { + Trace.instant(Trace.TRACE_TAG_ACTIVITY_MANAGER, "scheduleStopService. token=" + + token); + } sendMessage(H.STOP_SERVICE, token); } @Override public final void scheduleTimeoutService(IBinder token, int startId) { + if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { + Trace.instant(Trace.TRACE_TAG_ACTIVITY_MANAGER, "scheduleTimeoutService. token=" + + token); + } sendMessage(H.TIMEOUT_SERVICE, token, startId); }