前言
接触Compose有一段时间了,感觉易用性拉满,能应付很多复杂场景,而且官方文档还算比较完善,不过还是需要自己没事的时候多看看。
使用场景
我个人开发的时候还是习惯使用多个Activity的方式,这样方便管理,使用单个Activity + Navigation的方式固然优秀,但是架不住本人学艺不精,对Navigation的认识深度还不够,再加上公司项目模块很多,不太好迁移,暂时就这么用着吧。
干货
使用 Lifecycle 包中的 LifecycleEventObserver 即可。
@Composable
fun LifecycleEffect(
onCreate: (() -> Unit)? = null,
onStart: (() -> Unit)? = null,
onResume: (() -> Unit)? = null,
onPause: (() -> Unit)? = null,
onStop: (() -> Unit)? = null,
onDestroy: (() -> Unit)? = null,
) {
val lifecycleOwner = LocalLifecycleOwner.current
DisposableEffect(lifecycleOwner) {
val observer = LifecycleEventObserver { _, event ->
when (event) {
Lifecycle.Event.ON_CREATE -> onCreate?.invoke()
Lifecycle.Event.ON_START -> onStart?.invoke()
Lifecycle.Event.ON_RESUME -> onResume?.invoke()
Lifecycle.Event.ON_PAUSE -> onPause?.invoke()
Lifecycle.Event.ON_STOP -> onStop?.invoke()
Lifecycle.Event.ON_DESTROY -> onDestroy?.invoke()
else -> {}
}
}
lifecycleOwner.lifecycle.addObserver(observer)
onDispose {
lifecycleOwner.lifecycle.removeObserver(observer)
}
}
}
现在,你可以在任何一个Compose函数中监听生命周期啦。
简单的结尾
非科班火鸡安卓,如果有问题或错误,欢迎批评指正。