diff --git a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java index 0c8be97f38..caa827f0c4 100644 --- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java +++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java @@ -49,6 +49,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.ColorInt; +import androidx.annotation.DoNotInline; import androidx.annotation.IntDef; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; @@ -427,7 +428,11 @@ public class PlayerView extends FrameLayout implements AdViewProvider { } break; default: - surfaceView = new SurfaceView(context); + SurfaceView view = new SurfaceView(context); + if (Util.SDK_INT >= 34) { + Api34.setSurfaceLifecycleToFollowsAttachment(view); + } + surfaceView = view; break; } surfaceView.setLayoutParams(params); @@ -1737,4 +1742,13 @@ public class PlayerView extends FrameLayout implements AdViewProvider { } } } + + @RequiresApi(34) + private static class Api34 { + + @DoNotInline + public static void setSurfaceLifecycleToFollowsAttachment(SurfaceView surfaceView) { + surfaceView.setSurfaceLifecycle(SurfaceView.SURFACE_LIFECYCLE_FOLLOWS_ATTACHMENT); + } + } }