Ausgewähltes Element verwalten Bildschirmnavigation Ein Aktivitäten (Prozesstod) nicht aktiviert lassen
Posted: 12 Jan 2025, 09:29
Ich verwende Jetpack Compose mit NavController, um die Navigation in meiner App zu verwalten. Ich habe einen Bildschirm, auf dem ich den Bildschirm löschen möchte, wenn das ausgewählte Element sofort null ist, oder die Navigation einschränken oder ein Popup-Fenster möchte, wenn der Benutzer nach einem niedrigen Speicherdruck oder einem Prozesstod zum Bildschirm zurückkehrt > Außerdem ist das ausgewählte Element null, da das Viewmdoel aufgrund eines Prozessabbruchs neu erstellt wird, aber ich konnte sehen, dass die Navigation immer noch im Stapel ist. Ich möchte nicht durch diesen Bildschirm navigieren. Wie gehe ich damit um?
Auch der folgende Code ist garantiert?
Auch der folgende Code ist garantiert?
Code: Select all
@Composable
fun DetailedServiceScreen(
navController: NavController,
viewModel: ServicesViewModel
) {
val selectedItem by viewModel.selectedItem.collectAsState()
// Use DisposableEffect to handle disposal and backstack pop
DisposableEffect(Unit) {
onDispose {
if (selectedItem == null) {
// Pop the backstack if selectedItem is null
navController.popBackStack()
Log.e(TAG, "Disposed and popped back stack")
}
Log.e(TAG, "Dispose called")
}
}
// Your composable content here
if (selectedItem != null) {
// Display detailed content if item is selected
DetailedServiceContent(selectedItem = selectedItem)
}
}