Compose系列 四 生命周期

本文深入探讨了Android Compose的生命周期,强调了如何通过Composition进行UI更新。介绍了Compose如何跟踪状态变化以触发重绘,以及如何通过Call Site和稳定类型避免不必要的重绘。此外,还讨论了key的概念,用于确保UI实例与数据的一一对应,并提供优化性能的策略。
摘要由CSDN通过智能技术生成

本系列是我学习compose过程中,对官方文档的翻译和解读,以及实验性的Demo工程。主要参考官方文档和中文手册

全部的正文内容(Demo工程除外)源自Compose官方文档,个人解读以引用的形式插入。

Compose 官方文档 https://developer.android.google.cn/jetpack/compose

Compose 中文手册 https://compose.net.cn/

本文翻译内容 https://developer.android.google.cn/jetpack/compose/lifecycle

生命周期的概述

Composition(翻译成绘制)是运行可组合函数后生成的结果,它是一个树状的结构,描述着app的各个UI

Jetpack第一次运行可组合函数时,也叫作initial compositionJetpack会跟踪你所调用的所有可组合函数。然后,当app的状态改变时,Jetpack会触发一次recomposition(翻译成重绘)。重绘是指随着状态的改变,那些把该状态作为入参的可组合函数,会被Jetpack重新运行一遍。任何状态的改变都是通过重绘的方式反映到UI上的。

Composition只能通过initial compositionrecomposition来生成。而改变一个已经存在的composition只能通过recomposition

Diagram showing the lifecycle of a composable

如图,一个可组合函数的生命周期分三部分,分别是initial composition时进入一个composition,然后是随着状态的改变recomposition0次或多次,最后是离开这个composition

重绘往往是通过State对象的变化触发的。Jetpack Compose会跟踪这些State对象,当它们改变时,把它们作为入参的可组合函数们也被重新执行。

如果一个可组合函数被重复调用了多次,那么在该Composition中会创建多个实例,每一个实例有独立的生命周期

@Composable
fun MyComposable() {
   
    Column {
   
        Text("Hello")
        Text("World")
    }
}
Diagram showing the hierarchical arrangement of the elements in the previous code snippet

Compose中每一个UI组件的生命周期被大大简化了,而不是像传统View中的一系列过程

所以我们编码时,只需要关注三个点。一是UI的初始化时机,二是UI的重绘时机,三是UI的Remove时机

对Composition中一个Composable的解析

Composition对每一个Co

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值