@@ -411,19 +411,22 @@ private void logAppStartTrace() {
411
411
.setDurationUs (getClassLoadTimeCompat ().getDurationMicros (onCreateTime ));
412
412
subtraces .add (traceMetricBuilder .build ());
413
413
414
- traceMetricBuilder = TraceMetric .newBuilder ();
415
- traceMetricBuilder
416
- .setName (Constants .TraceNames .ON_START_TRACE_NAME .toString ())
417
- .setClientStartTimeUs (onCreateTime .getMicros ())
418
- .setDurationUs (onCreateTime .getDurationMicros (onStartTime ));
419
- subtraces .add (traceMetricBuilder .build ());
420
-
421
- traceMetricBuilder = TraceMetric .newBuilder ();
422
- traceMetricBuilder
423
- .setName (Constants .TraceNames .ON_RESUME_TRACE_NAME .toString ())
424
- .setClientStartTimeUs (onStartTime .getMicros ())
425
- .setDurationUs (onStartTime .getDurationMicros (onResumeTime ));
426
- subtraces .add (traceMetricBuilder .build ());
414
+ // OnStartTime is not captured in all situations, so checking for valid value before using it.
415
+ if (onStartTime != null ) {
416
+ traceMetricBuilder = TraceMetric .newBuilder ();
417
+ traceMetricBuilder
418
+ .setName (Constants .TraceNames .ON_START_TRACE_NAME .toString ())
419
+ .setClientStartTimeUs (onCreateTime .getMicros ())
420
+ .setDurationUs (onCreateTime .getDurationMicros (onStartTime ));
421
+ subtraces .add (traceMetricBuilder .build ());
422
+
423
+ traceMetricBuilder = TraceMetric .newBuilder ();
424
+ traceMetricBuilder
425
+ .setName (Constants .TraceNames .ON_RESUME_TRACE_NAME .toString ())
426
+ .setClientStartTimeUs (onStartTime .getMicros ())
427
+ .setDurationUs (onStartTime .getDurationMicros (onResumeTime ));
428
+ subtraces .add (traceMetricBuilder .build ());
429
+ }
427
430
428
431
metric .addAllSubtraces (subtraces ).addPerfSessions (this .startSession .build ());
429
432
0 commit comments