LifecycleHelper.kt (1058B) - raw
1 package me.rhunk.snapenhance.ui.util 2 3 import androidx.compose.runtime.Composable 4 import androidx.compose.runtime.DisposableEffect 5 import androidx.compose.runtime.rememberUpdatedState 6 import androidx.lifecycle.Lifecycle 7 import androidx.lifecycle.LifecycleEventObserver 8 import androidx.lifecycle.LifecycleOwner 9 import androidx.lifecycle.compose.LocalLifecycleOwner 10 11 //https://stackoverflow.com/questions/66546962/jetpack-compose-how-do-i-refresh-a-screen-when-app-returns-to-foreground 12 @Composable 13 fun OnLifecycleEvent(onEvent: (owner: LifecycleOwner, event: Lifecycle.Event) -> Unit) { 14 val eventHandler = rememberUpdatedState(onEvent) 15 val lifecycleOwner = rememberUpdatedState(LocalLifecycleOwner.current) 16 17 DisposableEffect(lifecycleOwner.value) { 18 val lifecycle = lifecycleOwner.value.lifecycle 19 val observer = LifecycleEventObserver { owner, event -> 20 eventHandler.value(owner, event) 21 } 22 23 lifecycle.addObserver(observer) 24 onDispose { 25 lifecycle.removeObserver(observer) 26 } 27 } 28 }