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 }