本系列是我学习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 composition
,Jetpack
会跟踪你所调用的所有可组合函数。然后,当app
的状态改变时,Jetpack
会触发一次recomposition
(翻译成重绘)。重绘是指随着状态的改变,那些把该状态作为入参的可组合函数,会被Jetpack
重新运行一遍。任何状态的改变都是通过重绘的方式反映到UI
上的。
Composition
只能通过initial composition
和recomposition
来生成。而改变一个已经存在的composition
只能通过recomposition
![Diagram showing the lifecycle of a composable](https://developer.android.google.cn/images/jetpack/compose/lifecycle-composition.png#pic_center)
如图,一个可组合函数的生命周期分三部分,分别是initial composition
时进入一个composition
,然后是随着状态的改变recomposition
0次或多次,最后是离开这个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](https://developer.android.google.cn/images/jetpack/compose/lifecycle-hierarchy.png#pic_center)
Compose中每一个UI组件的生命周期被大大简化了,而不是像传统View中的一系列过程
所以我们编码时,只需要关注三个点。一是UI的初始化时机,二是UI的重绘时机,三是UI的Remove时机
对Composition中一个Composable的解析
Composition
对每一个Co