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 :执行不需要清理且需要在每次重组后立即运行的简单操作。

参考/推荐

Android APK打包流程IPC之Binder
Loading...