menu

如果一条数据在多个位置呈现,很容易忘记更新显示它的某个视图。

ui 模型的变化,单一数据源。react、订阅者模型

颗粒度问题, 一个模型每个个字段独立可观察,太繁琐 还是整个模型可观察,任何更改都可能触发界面刷新。

模型,写时复制成本不高,但是刷新界面成本相对较高

如果可以在界面这层控制只刷新变更的字段涉及的控件。

声明式布局,关注点其实是其背后的

Compose 会智能地选择在任何给定时间需要重新绘制界面的哪些部分

Compose 函数

幂等、无副作用

状态与界面的转换

界面交互

重组

深挖

Compose 函数要纯函数、满足交换律、幂等性

取消重组后,Compose 会从重组中舍弃界面树。如有任何附带效应依赖于显示的界面,则即使取消了组成操作,也会应用该附带效应。这可能会导致应用状态不一致。确保所有可组合函数和 lambda 都幂等且没有附带效应,以处理乐观的重组。

Compose 函数返回的是 Unit,这点和 SwiftUI 不同,造成属性配置的差异

measurable ,list of children that need to be measured

与 contraints

Single Responaiblity

** in the declarative ui system, the code itself describes the ui like at any point in time, not just the initial time **

关注点分离

Declarative UI Patterns

UI Toolkit,屏幕发生了很大变化,320*240 到现在

View.java: 29188 line of code

why spinner ?Spinner is Dropdown or combo box ,first sdk spinner 的切换确实是转动的

Button Fragment,custom view or viewgroup,很难决定,太多模糊不清的区域

data flow ,single source of truth.

view own state and make their own changes

控制一个组件的代码,分布在各个地方 XXFragment fragment_xx.xml attr.xml style.xml. 影响专注。

React Litho Vue Flutter

Jetpack Compose 源码

异步代码也是基于 Coroutine 的

EmbeddingContext 包装了一个 main thread CoroutineContext

用了一个 expert 函数来创建 EmbeddingContext ,看来是有为跨平台做装备

keyboard_arrow_up