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
This commit is contained in:
Zim
2023-06-07 17:17:06 +01:00
committed by Zimuzo Ezeozue
parent ecf3710bd6
commit 564686e7d8

View File

@@ -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);
}