Android Compose Navigation Screen wird oft aufgerufenAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Android Compose Navigation Screen wird oft aufgerufen

Post by Guest »

Ich habe eine Situation, bei der ich nicht sicher bin, ob das normal oder ein Problem ist. Ich wollte sichergehen, ob das akzeptabel ist und habe diese Frage gestellt. Hier sind die Details:
Ich habe eine Android-Anwendung mit Verfassen und Navigation. Ich habe 1 Aktivität und viele Bildschirme. Einer dieser Bildschirme ist MerkeziSahne und der andere ist TalimSahnesi. Beim Öffnen der Anwendung wird MerkeziSahne angezeigt. Mit einer Schaltfläche in MerkeziSanhe können wir zu TalimSahnesi navigieren.
Wenn ich auf die Schaltfläche TalimSahnesi klicke, passiert Folgendes:
  • < li>MerkeziSahne wird gerufen,
  • Dann wird TalimSahnesi gerufen und gezogen,
  • Wieder wird MerkeziSahne gerufen,
    < li>Andererseits TalimSahnesi wird aufgerufen und gezeichnet.
  • Nachdem TalimSahnesi aufgerufen wurde, bevor alles gezeichnet ist,
    TalimSahnesi wird erneut aufgerufen und gezeichnet.
Warum passiert das? Hängt das mit Zuständen für Compose-Funktionen zusammen? Verursacht irgendetwas so viele Neuzeichnungen?
Hier ist der Code für NavHost:

Code: Select all

@Composable
fun NavigationView(
navController: NavHostController,
ustIdareCubuguDataBuilder: (navController: NavHostController, sahne: Sahne) -> UstIdareCubuguData,
merkeziSahneViewModel: MerkeziSahneViewModel,
talimSahnesiViewModel: TalimSahnesiViewModel
) {
NavHost(
modifier = Modifier.background(MaterialTheme.colorScheme.surface),
navController = navController,
startDestination = Sahne.MerkeziSahne.hedef) {

composable(
Sahne.MerkeziSahne.hedef,
enterTransition = {
slideIntoContainer(
AnimatedContentTransitionScope.SlideDirection.Right,
animationSpec = tween(700)
)
},
exitTransition = {
slideOutOfContainer(
AnimatedContentTransitionScope.SlideDirection.Left,
animationSpec = tween(700)
)
}) {
merkeziSahneViewModel.ustIdareCubuguData = ustIdareCubuguDataBuilder(navController, Sahne.MerkeziSahne)
merkeziSahneViewModel.talimeBaslaOnClick = { navController.navigateOnce(Sahne.TalimlerSahnesi.hedef) }

MerkeziSahne(merkeziSahneViewModel)
}

composable(
Sahne.TalimlerSahnesi.hedef,
enterTransition = {
slideIntoContainer(
AnimatedContentTransitionScope.SlideDirection.Left,
animationSpec = tween(700)
)
},
exitTransition = {
slideOutOfContainer(
AnimatedContentTransitionScope.SlideDirection.Right,
animationSpec = tween(700)
)
}) {
val ustIdareCubuguData = ustIdareCubuguDataBuilder(navController, Sahne.TalimlerSahnesi)
talimSahnesiViewModel.ustIdareCubuguData = ustIdareCubuguData

TalimlerSahnesi(talimSahnesiViewModel)
}

}
}

private fun NavController.navigateOnce(hedef: String) {
if (this.currentDestination?.route !== hedef) {
this.navigate(hedef)
}
}

private fun NavController.navigateOnce(hedef: String,
builder: NavOptionsBuilder.() -> Unit) {
if (this.currentDestination?.route !== hedef) {
this.navigate(hedef, builder)
}
}

Ich habe diese navigationOnce-Funktionen hinzugefügt. Ich dachte, es lag daran, dass diese Bildschirme oft aufgerufen wurden. Dies hat jedoch nichts geändert.
Vielen Dank für Ihre Hilfe.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post