Jee*_*eva 3 android kotlin android-jetpack-compose
我正在使用 Jetpack Compose 创建一个应用程序。该应用程序在后台进行一些网络搜索。如果用户决定按后退按钮,我想取消搜索。所以我用DisposableEffect.
@Composable
fun SecondScreen() {
val vm: MainViewModel = hiltViewModel()
DisposableEffect(key1 = vm) {
onDispose {
vm.cancelSearch()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道onDispose当可组合项被销毁时会调用它。但现在每次旋转屏幕时搜索都会被取消。我可以理解这一点,因为可组合项被破坏并重新创建。
我想知道我是否可以检测屏幕旋转生命周期,也许我可以防止这种行为。或者是否有更好的方法在用户按返回时取消搜索?
Mah*_*eei 24
我写了这个 fun,你可以在每个可组合的 fun 中调用它
@Composable
fun ComposableLifecycle(
lifeCycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
onEvent: (LifecycleOwner, Lifecycle.Event) -> Unit
) {
DisposableEffect(lifeCycleOwner) {
val observer = LifecycleEventObserver { source, event ->
onEvent(source, event)
}
lifeCycleOwner.lifecycle.addObserver(observer)
onDispose {
lifeCycleOwner.lifecycle.removeObserver(observer)
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用:
@Composable
fun VideoPlayer() {
...
ComposableLifecycle { source, event ->
if (event == Lifecycle.Event.ON_PAUSE) {
exoPlayer.pause()
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7946 次 |
| 最近记录: |