urlname
type
Post
password
SyncToConfluence
category
Android
date
Apr 14, 2024
slug
01HVHG77X4RYGJ1NH1R1S7AHZS
icon
Button
catalog
summary
tags
Android
Compose
cover
Status
BusyTime
Status 1
status
Published
分类
- SideEffect
- LaunchedEffect
- DisposableEffect
LaunchedEffect
用于在 Composable 函数中启动协程,可以给挂起函数、协程等提供协程上下文。
使用场景
- 异步数据加载,如从数据库或网络加载数据。
- 执行有延迟的操作,如启动延迟动画或倒计时。
使用例子
DisposableEffect
用于管理需要清理的资源,比如事件监听器、订阅或其他需要在 Composable 从组件树中移除时清除的资源。
当
DisposableEffect 中的键参数发生变化时,或者 Composable 被移除时,会调用其清理逻辑。使用场景:
- 添加和移除事件监听器,如GPS 更新、传感器数据。
- 订阅和取消订阅外部数据流,如 Flow 或 LiveData。
- 管理与外部系统的连接,如 Bluetooth 或 WebSocket。
使用例子
添加和移除系统广播接收器。
SideEffect
用于执行那些需要在 Composable 函数的每次重组后立即运行的副作用,而不涉及取消或清理逻辑。
使用场景:
- 修改全局状态或执行全局操作,如设置系统的 UI 标志(如状态栏颜色)。
- 在重组后立即更新日志或分析数据。
- 用于触发非托管或非取消操作,这些操作不需要清理。、
使用例子
总结
LaunchedEffect:处理需要协程的异步或延迟操作。
DisposableEffect:管理需要在 Composable 移除或更新时进行清理的资源。
SideEffect:执行不需要清理且需要在每次重组后立即运行的简单操作。
参考/推荐
- Author:CoderWdd
- URL:https://www.wuinsights.top//article/01HVHG77X4RYGJ1NH1R1S7AHZS
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts

