From 507bd034036f57c101bd3961c3797b31d05d8996 Mon Sep 17 00:00:00 2001 From: Peter Kalauskas Date: Wed, 2 Nov 2022 15:11:14 -0700 Subject: [PATCH] Check if tracing is on before generating strings Guard Trace.beginSection to avoid unnecessary StringBuilder usage, which would result in GC garbage churn. Also, convert sections to instants when that is more applicable. This also guards against potential run-time crashes if the trace section string is longer than 127 characters. Finally, correct some tracing usage in try blocks. Test: manual Bug: 257075630 Change-Id: Ibe6f194c779256615a7887931256324f7c78811a --- .../buttons/KeyButtonRipple.java | 21 ++++++---- .../android/systemui/SystemUIApplication.java | 39 ++++++++++++++----- .../broadcast/UserBroadcastDispatcher.kt | 11 +++++- .../systemui/doze/DozeScreenBrightness.java | 5 ++- ...iceStateRotationLockSettingController.java | 5 ++- 5 files changed, 60 insertions(+), 21 deletions(-) diff --git a/packages/SystemUI/shared/src/com/android/systemui/navigationbar/buttons/KeyButtonRipple.java b/packages/SystemUI/shared/src/com/android/systemui/navigationbar/buttons/KeyButtonRipple.java index 8aa3abac831f9..a14f971286626 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/navigationbar/buttons/KeyButtonRipple.java +++ b/packages/SystemUI/shared/src/com/android/systemui/navigationbar/buttons/KeyButtonRipple.java @@ -291,8 +291,10 @@ public class KeyButtonRipple extends Drawable { } private void endAnimations(String reason, boolean cancel) { - Trace.beginSection("KeyButtonRipple.endAnim: reason=" + reason + " cancel=" + cancel); - Trace.endSection(); + if (Trace.isEnabled()) { + Trace.instant(Trace.TRACE_TAG_APP, + "KeyButtonRipple.endAnim: reason=" + reason + " cancel=" + cancel); + } mVisible = false; mTmpArray.addAll(mRunningAnimations); int size = mTmpArray.size(); @@ -502,20 +504,23 @@ public class KeyButtonRipple extends Drawable { @Override public void onAnimationStart(Animator animation) { - Trace.beginSection("KeyButtonRipple.start." + mName); - Trace.endSection(); + if (Trace.isEnabled()) { + Trace.instant(Trace.TRACE_TAG_APP, "KeyButtonRipple.start." + mName); + } } @Override public void onAnimationCancel(Animator animation) { - Trace.beginSection("KeyButtonRipple.cancel." + mName); - Trace.endSection(); + if (Trace.isEnabled()) { + Trace.instant(Trace.TRACE_TAG_APP, "KeyButtonRipple.cancel." + mName); + } } @Override public void onAnimationEnd(Animator animation) { - Trace.beginSection("KeyButtonRipple.end." + mName); - Trace.endSection(); + if (Trace.isEnabled()) { + Trace.instant(Trace.TRACE_TAG_APP, "KeyButtonRipple.end." + mName); + } } } diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java index b888d54956cfd..83747b4f86364 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java @@ -278,7 +278,11 @@ public class SystemUIApplication extends Application implements } private static void notifyBootCompleted(CoreStartable coreStartable) { - Trace.beginSection(coreStartable.getClass().getSimpleName() + ".onBootCompleted()"); + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, + coreStartable.getClass().getSimpleName() + ".onBootCompleted()"); + } coreStartable.onBootCompleted(); Trace.endSection(); } @@ -300,14 +304,18 @@ public class SystemUIApplication extends Application implements private static CoreStartable startAdditionalStartable(String clsName) { CoreStartable startable; if (DEBUG) Log.d(TAG, "loading: " + clsName); + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, clsName + ".newInstance()"); + } try { - Trace.beginSection(clsName + ".newInstance()"); startable = (CoreStartable) Class.forName(clsName).newInstance(); - Trace.endSection(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException ex) { throw new RuntimeException(ex); + } finally { + Trace.endSection(); } return startStartable(startable); @@ -315,7 +323,10 @@ public class SystemUIApplication extends Application implements private static CoreStartable startStartable(String clsName, Provider provider) { if (DEBUG) Log.d(TAG, "loading: " + clsName); - Trace.beginSection("Provider<" + clsName + ">.get()"); + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, "Provider<" + clsName + ">.get()"); + } CoreStartable startable = provider.get(); Trace.endSection(); return startStartable(startable); @@ -323,7 +334,10 @@ public class SystemUIApplication extends Application implements private static CoreStartable startStartable(CoreStartable startable) { if (DEBUG) Log.d(TAG, "running: " + startable); - Trace.beginSection(startable.getClass().getSimpleName() + ".start()"); + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, startable.getClass().getSimpleName() + ".start()"); + } startable.start(); Trace.endSection(); @@ -364,15 +378,22 @@ public class SystemUIApplication extends Application implements public void onConfigurationChanged(Configuration newConfig) { if (mServicesStarted) { ConfigurationController configController = mSysUIComponent.getConfigurationController(); - Trace.beginSection( - configController.getClass().getSimpleName() + ".onConfigurationChanged()"); + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, + configController.getClass().getSimpleName() + ".onConfigurationChanged()"); + } configController.onConfigurationChanged(newConfig); Trace.endSection(); int len = mServices.length; for (int i = 0; i < len; i++) { if (mServices[i] != null) { - Trace.beginSection( - mServices[i].getClass().getSimpleName() + ".onConfigurationChanged()"); + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, + mServices[i].getClass().getSimpleName() + + ".onConfigurationChanged()"); + } mServices[i].onConfigurationChanged(newConfig); Trace.endSection(); } diff --git a/packages/SystemUI/src/com/android/systemui/broadcast/UserBroadcastDispatcher.kt b/packages/SystemUI/src/com/android/systemui/broadcast/UserBroadcastDispatcher.kt index 5850c9537ef06..08c7c0fd0b035 100644 --- a/packages/SystemUI/src/com/android/systemui/broadcast/UserBroadcastDispatcher.kt +++ b/packages/SystemUI/src/com/android/systemui/broadcast/UserBroadcastDispatcher.kt @@ -127,7 +127,10 @@ open class UserBroadcastDispatcher( action, userId, { - Trace.beginSection("registerReceiver act=$action user=$userId") + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, "registerReceiver act=$action user=$userId") + } context.registerReceiverAsUser( this, UserHandle.of(userId), @@ -141,7 +144,11 @@ open class UserBroadcastDispatcher( }, { try { - Trace.beginSection("unregisterReceiver act=$action user=$userId") + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, + "unregisterReceiver act=$action user=$userId") + } context.unregisterReceiver(this) Trace.endSection() logger.logContextReceiverUnregistered(userId, action) diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java index 60227ee95fc29..937884c79072a 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java @@ -171,7 +171,10 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi @Override public void onSensorChanged(SensorEvent event) { - Trace.beginSection("DozeScreenBrightness.onSensorChanged" + event.values[0]); + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, "DozeScreenBrightness.onSensorChanged" + event.values[0]); + } try { if (mRegistered) { mLastSensorValue = (int) event.values[0]; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java index 1d414745e6ed3..7acdaffb48c4d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java @@ -118,7 +118,10 @@ public final class DeviceStateRotationLockSettingController private void updateDeviceState(int state) { Log.v(TAG, "updateDeviceState [state=" + state + "]"); - Trace.beginSection("updateDeviceState [state=" + state + "]"); + if (Trace.isEnabled()) { + Trace.traceBegin( + Trace.TRACE_TAG_APP, "updateDeviceState [state=" + state + "]"); + } try { if (mDeviceState == state) { return;