安卓 compose LaunchedEffect() { } 高级使用场景以及使用示例
时间: 2024-03-27 19:35:26 浏览: 144
在 Android Compose 中,LaunchedEffect() 是一个非常有用的函数,它可以用于启动异步任务并在任务完成后更新界面。下面是一些 LaunchedEffect() 的高级使用场景和示例:
1. 加载网络数据:在 LaunchedEffect() 中启动一个协程,使用 Retrofit 或其他网络库加载数据。在数据加载完成后,使用 State 或其他 Compose API 更新 UI。
```kotlin
LaunchedEffect(Unit) {
val result = loadDataFromNetwork()
data.value = result
}
```
2. 启动动画:在 LaunchedEffect() 中启动一个协程,使用动画库执行动画。在动画完成后,使用 State 或其他 Compose API 更新 UI。
```kotlin
LaunchedEffect(Unit) {
animateIcon()
isIconAnimated.value = true
}
```
3. 调用系统服务:在 LaunchedEffect() 中启动一个协程,使用系统服务(例如 LocationManager)获取数据。在数据获取完成后,使用 State 或其他 Compose API 更新 UI。
```kotlin
LaunchedEffect(Unit) {
val location = locationManager.getLastKnownLocation()
currentLocation.value = location
}
```
4. 启动定时器:在 LaunchedEffect() 中启动一个协程,使用 Timer 或其他定时器库执行定时任务。在任务完成后,使用 State 或其他 Compose API 更新 UI。
```kotlin
LaunchedEffect(Unit) {
val timer = Timer()
timer.schedule(1000) {
elapsedTime.value += 1
}
}
```
这些示例只是 LaunchedEffect() 的一小部分用法,你可以根据自己的需求使用它。需要注意的是,LaunchedEffect() 中启动的协程会在组件被删除时自动取消,因此不必担心内存泄漏问题。