summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/preloaded-classes-denylist1
-rw-r--r--core/java/com/android/internal/jank/InteractionJankMonitor.java15
2 files changed, 6 insertions, 10 deletions
diff --git a/config/preloaded-classes-denylist b/config/preloaded-classes-denylist
index 02f2df6167a5..502d8c6dadb1 100644
--- a/config/preloaded-classes-denylist
+++ b/config/preloaded-classes-denylist
@@ -9,3 +9,4 @@ android.net.rtp.AudioGroup
android.net.rtp.AudioStream
android.net.rtp.RtpStream
java.util.concurrent.ThreadLocalRandom
+com.android.internal.jank.InteractionJankMonitor$InstanceHolder
diff --git a/core/java/com/android/internal/jank/InteractionJankMonitor.java b/core/java/com/android/internal/jank/InteractionJankMonitor.java
index 6e8a0c734cac..fc4e041058b1 100644
--- a/core/java/com/android/internal/jank/InteractionJankMonitor.java
+++ b/core/java/com/android/internal/jank/InteractionJankMonitor.java
@@ -293,7 +293,10 @@ public class InteractionJankMonitor {
UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_CLEAR_ALL,
};
- private static volatile InteractionJankMonitor sInstance;
+ private static class InstanceHolder {
+ public static final InteractionJankMonitor INSTANCE =
+ new InteractionJankMonitor(new HandlerThread(DEFAULT_WORKER_NAME));
+ }
private final DeviceConfig.OnPropertiesChangedListener mPropertiesChangedListener =
this::updateProperties;
@@ -385,15 +388,7 @@ public class InteractionJankMonitor {
* @return instance of InteractionJankMonitor
*/
public static InteractionJankMonitor getInstance() {
- // Use DCL here since this method might be invoked very often.
- if (sInstance == null) {
- synchronized (InteractionJankMonitor.class) {
- if (sInstance == null) {
- sInstance = new InteractionJankMonitor(new HandlerThread(DEFAULT_WORKER_NAME));
- }
- }
- }
- return sInstance;
+ return InstanceHolder.INSTANCE;
}
/**