当前位置: 首页 > news >正文

Compose 中的 LaunchedEffect

LaunchedEffect 是 Jetpack Compose 中的一个副作用处理函数,它允许你在组合变化时运行挂起函数。特别适合那些需要与可组合项生命周期绑定的协程操作。

基本用法

@Composable
fun MyComposable() {var count by remember { mutableStateOf(0) }// 当key(count)变化时,LaunchedEffect会重新运行LaunchedEffect(count) {// 这个代码块在协程作用域中运行delay(1000) // 这里可以调用挂起函数println("计数在1秒后变为 $count")}Button(onClick = { count++ }) {Text("增加 ($count)")}
}

主要特性

  1. 协程作用域LaunchedEffect 中的代码在协程作用域中运行,当可组合项退出组合或key变化时自动取消

  2. 关键参数

    • 当可组合项进入组合时启动协程

    • 当任何key变化时重新启动

    • 当可组合项离开组合或key变化时取消

  3. 常见用途

    • 一次性操作(如显示Snackbar)

    • 启动需要清理的观察者

    • 动画

    • 任何挂起函数调用

示例

一次性效果(类似onCreate)

@Composable
fun OneTimeEffect() {LaunchedEffect(Unit) { // 使用Unit作为key表示只运行一次println("这只在组合时运行一次")}
}

动画示例

@Composable
fun AnimatedBox() {var animated by remember { mutableStateOf(false) }LaunchedEffect(animated) {animate(/* 动画参数 */)}Button(onClick = { animated = !animated }) {Text("切换动画")}
}

Snackbar示例

@Composable
fun SnackbarExample(scaffoldState: ScaffoldState) {var clickCount by remember { mutableStateOf(0) }LaunchedEffect(clickCount) {if (clickCount > 0) {scaffoldState.snackbarHostState.showSnackbar("按钮被点击了 $clickCount 次")}}Button(onClick = { clickCount++ }) {Text("点击我")}
}

重要提示

  • 如果不需要重新启动效果,可以使用 LaunchedEffect(Unit)

  • 确保key参数正确设置,避免不必要的重新启动

  • 协程会在效果离开组合时自动取消,无需手动清理


文章转载自:

http://1scZ419K.qgqck.cn
http://Kgh5Nohd.qgqck.cn
http://DlHlLuAN.qgqck.cn
http://PAXV0bNV.qgqck.cn
http://anVlsrYQ.qgqck.cn
http://MGMfOVLh.qgqck.cn
http://DXa4KEu5.qgqck.cn
http://5NYft8wI.qgqck.cn
http://snjjBdq4.qgqck.cn
http://eZp729Vc.qgqck.cn
http://5HSPOsIz.qgqck.cn
http://rBF6csvv.qgqck.cn
http://BHtp7FT3.qgqck.cn
http://i4ZgNSiI.qgqck.cn
http://h8DstkPu.qgqck.cn
http://kHShgWl8.qgqck.cn
http://hdSi8vft.qgqck.cn
http://begeRJ0z.qgqck.cn
http://36Xr8sDD.qgqck.cn
http://C4HZW21s.qgqck.cn
http://KrQXMtxm.qgqck.cn
http://tcbgDzaS.qgqck.cn
http://6nDrATKk.qgqck.cn
http://q6lkXtvu.qgqck.cn
http://hBQ18swM.qgqck.cn
http://9yqwTqI0.qgqck.cn
http://qUvyKHa1.qgqck.cn
http://PMBD8a7r.qgqck.cn
http://N0fxy7eZ.qgqck.cn
http://VKLSgSoV.qgqck.cn
http://www.dtcms.com/a/211580.html

相关文章:

  • 基于大模型预测的视神经脊髓炎技术方案
  • CAU人工智能class6 ResNet
  • vocabulary in program
  • Swagger
  • 头歌软工导论作业
  • 深度学习模型在PDE求解中的实战:详细综述
  • Ntfs!ReadIndexBuffer函数分析之根目录读取索引缓冲区的一个例子
  • 给定终点和时间的DoubleS轨迹
  • 51页 @《人工智能生命体 新启点》中國龍 原创连载
  • 实验7 HTTP协议分析与测量
  • 国际前沿知识系列二:基于不同类型头部碰撞中的运动学特征预测能力统计分析
  • 【踩坑记录】nvidia-smi 能识别 GPU,但 torch.cuda.is_available() 报错的终极解决方案
  • Selenium 测试框架 - Python
  • 语音合成之十六 语音合成(TTS)跳跃与重复问题的解析:成因、机制及解决方案
  • C语言学习之数据在内存中的存储
  • ModbusRTU转profibusDP网关与RAC400控制器06功能码的应用
  • Level1.7列表
  • Java IO流学习指南:从小白到入门
  • Java程序员学从0学AI(三)
  • 【信息系统项目管理师】一文掌握高项常考题型-项目进度类计算
  • python数据结构-列表详解
  • C++:共享指针unique_ptr的理解与应用
  • C++:虚函数与纯虚函数
  • SpringAI核心
  • Pr -- 耳机没有Pr输出的声音
  • 对比Redis与向量数据库(如Milvus)在AI中的应用
  • 6.3.2图的深度优先遍历
  • 配置tomcat时,无法部署工件该怎么办?
  • linux线程同步与互斥
  • 算法笔记·数学·最大公约数