From 24c9693d2c93bc3849022d28f987e70875d76d39 Mon Sep 17 00:00:00 2001 From: cartland Date: Fri, 15 Aug 2025 13:07:22 -0700 Subject: [PATCH] Fix: Prevent memory leak from implicit SAM conversion The lint tool reported an "ImplicitSamInstance" warning in PictureInPictureSnippets.kt. Lambdas used as listeners were being implicitly converted to new SAM instances, causing removeOnUserLeaveHintListener to fail because the listener instances did not match. This could lead to a memory leak. This commit fixes the issue by explicitly wrapping the listener lambdas in a 'Runnable' instance. This ensures a stable object reference is used for both adding and removing the listener. --- .../snippets/pictureinpicture/PictureInPictureSnippets.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt index 02d65d57c..295894832 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt @@ -356,7 +356,7 @@ fun PipListenerPreAPI12(shouldEnterPipMode: Boolean) { ) { val context = LocalContext.current DisposableEffect(context) { - val onUserLeaveBehavior: () -> Unit = { + val onUserLeaveBehavior = Runnable { context.findActivity() .enterPictureInPictureMode(PictureInPictureParams.Builder().build()) } @@ -384,7 +384,7 @@ fun EnterPiPPre12(shouldEnterPipMode: Boolean) { ) { val context = LocalContext.current DisposableEffect(context) { - val onUserLeaveBehavior: () -> Unit = { + val onUserLeaveBehavior = Runnable { if (currentShouldEnterPipMode) { context.findActivity() .enterPictureInPictureMode(PictureInPictureParams.Builder().build())