Skip to content

Instantly share code, notes, and snippets.

@yongjhih
Created August 2, 2023 06:37
Show Gist options
  • Save yongjhih/9ecdab5d54e527c9e1426f97c65e329c to your computer and use it in GitHub Desktop.
Save yongjhih/9ecdab5d54e527c9e1426f97c65e329c to your computer and use it in GitHub Desktop.
class SimpleLifecycleObserver(
var onCreate: SimpleLifecycleObserver.(LifecycleOwner) -> Unit = {},
var onStart: SimpleLifecycleObserver.(LifecycleOwner) -> Unit = {},
var onResume: SimpleLifecycleObserver.(LifecycleOwner) -> Unit = {},
var onPause: SimpleLifecycleObserver.(LifecycleOwner) -> Unit = {},
var onStop: SimpleLifecycleObserver.(LifecycleOwner) -> Unit = {},
var onDestroy: SimpleLifecycleObserver.(LifecycleOwner) -> Unit = {},
) : DefaultLifecycleObserver {
fun onCreate(onCreate: SimpleLifecycleObserver.(LifecycleOwner) -> Unit) = apply {
this.onCreate = onCreate
}
fun onStart(onStart: SimpleLifecycleObserver.(LifecycleOwner) -> Unit) = apply {
this.onStart = onStart
}
fun onResume(onResume: SimpleLifecycleObserver.(LifecycleOwner) -> Unit) = apply {
this.onResume = onResume
}
fun onPause(onPause: SimpleLifecycleObserver.(LifecycleOwner) -> Unit) = apply {
this.onPause = onPause
}
fun onStop(onStop: SimpleLifecycleObserver.(LifecycleOwner) -> Unit) = apply {
this.onStop = onStop
}
fun onDestroy(onDestroy: SimpleLifecycleObserver.(LifecycleOwner) -> Unit) = apply {
this.onDestroy = onDestroy
}
override fun onCreate(owner: LifecycleOwner) { onCreate.invoke(this, owner) }
override fun onStart(owner: LifecycleOwner) { onStart.invoke(this, owner) }
override fun onResume(owner: LifecycleOwner) { onResume.invoke(this, owner) }
override fun onPause(owner: LifecycleOwner) { onPause.invoke(this, owner) }
override fun onStop(owner: LifecycleOwner) { onStop.invoke(this, owner) }
override fun onDestroy(owner: LifecycleOwner) { onDestroy.invoke(this, owner) }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment