Compose 编程思想
1.声明性编程范式
Android 视图层次结构一直可以表示为界面 Widget 树。
手动操纵视图会提高出错的可能性。软件维护复杂性会随着需要更新的视图数量而增长。
行业开始转向,声明性界面模型,简化了与构建和更新界面关联的工程设计。该技术的工作原理是在概念上从头开始重新生成整个屏幕,然后仅执行必要的更改。此方法可避免手动更新有状态视图层次结构的复杂性。
2.简单的可组合函数
使用 Compose,您可以通过定义一组接受数据而发出界面元素的可组合函数来构建界面。
关于此函数,有几点值得注意:
此函数带有
@Composable
注释。此函数接受数据。
此函数可以在界面中显示文本.
此函数不会返回任何内容。
此函数快速、幂等且没有副作用。
3.声明性范式转变
在 Compose 的声明性方法中,微件相对无状态,并且不提供 setter 或 getter 函数。
应用逻辑为顶级可组合函数提供数据。
当状态发生变化时,系统会使用新数据再次调用可组合函数。这会导致重新绘制界面元素,此过程称为“重组”。
4.动态内容
5.重组
在 Compose 中,您可以使用新数据再次调用可组合函数。
重组是指在输入更改时再次调用可组合函数的过程。
切勿依赖于执行可组合函数所产生的附带效应,因为可能会跳过函数的重组。
附带效应是指对应用的其余部分可见的任何更改。
5.1 可组合函数可以按任何顺序执行
如果某个可组合函数包含对其他可组合函数的调用,这些函数可以按任何顺序运行。Compose 可以选择识别出某些界面元素的优先级高于其他界面元素,因而首先绘制这些元素。
5.2 可组合函数可以并行运行
我们允许框架更改线程以执行可组合 lambda。
5.3 重组会跳过尽可能多的内容
每个可组合函数和 lambda 都可以自行重组。
执行所有可组合函数或 lambda 都应该没有附带效应。当您需要执行附带效应时,应通过回调触发。
5.4 重组是乐观的操作
Compose 预计会在参数再次更改之前完成重组。
5.5 可组合函数可以非常频繁地运行
如果您的可组合函数需要数据,它应为相应的数据定义参数。然后,您可以将成本高昂的工作移至组成操作线程之外的其他线程,并使用 mutableStateOf
或 LiveData
将相应的数据传递给 Compose。
版权声明: 本文为 InfoQ 作者【Changing Lin】的原创文章。
原文链接:【http://xie.infoq.cn/article/7258cb650d34e37d266eea34d】。文章转载请联系作者。
评论