Die Benutzeroberfläche von ExoPlayer PlayerView wechselt zum vorherigen Bildschirm, wenn Sie „Zurück“ drücken oder navCoAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Die Benutzeroberfläche von ExoPlayer PlayerView wechselt zum vorherigen Bildschirm, wenn Sie „Zurück“ drücken oder navCo

Post by Guest »

Ich stehe vor einem Problem, bei dem die PlayerView von ExoPlayer nach dem Zurücknavigieren ausläuft oder auf den vorherigen Bildschirm überspringt. Dies geschieht, wenn ich die Zurück-Taste drücke oder navController.popBackStack() in einem Erstellungsbildschirm aufrufe.
Hier ist der Code für den zusammensetzbaren Bildschirm:

Code: Select all

@OptIn(ExperimentalMaterialApi::class)
@Stateless
@Composable
fun HelpVideo(@RawRes videoResource: Int,onNavIconClicked: () -> Unit,@StringRes guideTitle: Int)
{
ApplyStatusNavBarColor()
MaintenanceAppScaffold(topAppBar = {
CommonAppBar(
text = R.string.soundassist_update_interrupted_video,
isInfoButton = false,
isBackButton = false
)
})
{
val context = LocalContext.current

val exoPlayer = remember {
ExoPlayer.Builder(context).build().apply {
val videoUri = RawResourceDataSource.buildRawResourceUri(videoResource)
val mediaItem = MediaItem.fromUri(videoUri)
addMediaItem(mediaItem)
prepare()
playWhenReady = true
}
}
LaunchedEffect(exoPlayer) {
exoPlayer.awaitVideoFinish()
onNavIconClicked()
}
AndroidView(
modifier =
Modifier.fillMaxSize(),
factory = {
StyledPlayerView(context).apply {
player = exoPlayer
layoutParams =
FrameLayout.LayoutParams(
ViewGroup.LayoutParams
.MATCH_PARENT,
ViewGroup.LayoutParams
.MATCH_PARENT
)
useController = false
}
}
)

DisposableEffect(exoPlayer) {
onDispose {
exoPlayer.release()
}
}
}}
Das Problem:
Beim Zurücknavigieren:
  • Die PlayerView ist einige Sekunden lang auf dem vorherigen Bildschirm sichtbar
    bevor sie verschwindet. Dies geschieht unabhängig davon, ob ich die Zurück-Taste drücke oder navController.popBackStack() verwende.
Was ich versucht habe:
  • Verwendung von navController.popBackStack() – Das Problem besteht weiterhin.
  • Die einzige Problemumgehung, die ich gefunden habe, ist Aufruf von navController.navigate(GoToPreviousScreen). Dies löst zwar das
    visuelle Problem, führt jedoch zu anderen navigationsbezogenen Komplikationen
    und ist keine ideale Lösung.
Warum? verhält sich die PlayerView beim Zurücknavigieren so?
Wie kann ich dieses Problem beheben und gleichzeitig das richtige Navigationsverhalten beibehalten und Problemumgehungen wie navController.navigate() vermeiden?
Zusätzlicher Kontext :
Ich verwende Jetpack Compose mit ExoPlayer für die Videowiedergabe.
Das Problem scheint mit dem Lebenszyklus oder der Entsorgung von PlayerView in AndroidView zusammenzuhängen.
Bild zeigt das Problem

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post