From ccb08a1a06500ba9984c1f6abc588b2fd23074e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Mlynari=C4=8D?= Date: Mon, 23 May 2022 14:31:44 +0200 Subject: [PATCH] Add rememberMetricsStateHolder composable Change-Id: I420cfaf826fee770975164147c29280a760bb5ff --- .../nowinandroid/core/ui/JankStatsExtensions.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/JankStatsExtensions.kt b/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/JankStatsExtensions.kt index f6064ec74..f1e7544af 100644 --- a/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/JankStatsExtensions.kt +++ b/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/JankStatsExtensions.kt @@ -17,8 +17,25 @@ package com.google.samples.apps.nowinandroid.core.ui import android.view.View +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalView import androidx.metrics.performance.PerformanceMetricsState fun View.addPerformanceMetricsState(stateName: String, state: String) { PerformanceMetricsState.getForHierarchy(this).state?.addState(stateName, state) } + +/** + * Retrieves [PerformanceMetricsState.MetricsStateHolder] from current [LocalView] and + * remembers it until the View changes. + * @see PerformanceMetricsState.getForHierarchy + */ +@Composable +fun rememberMetricsStateHolder(): PerformanceMetricsState.MetricsStateHolder { + val localView = LocalView.current + + return remember(localView) { + PerformanceMetricsState.getForHierarchy(localView) + } +}