gpt4 book ai didi

android - Jetpack Compose 可以从任何线程绘制/更新 UI 吗?

转载 作者:行者123 更新时间:2023-12-04 17:15:14 24 4
gpt4 key购买 nike

我最近开始学习 Jetpack Compose,所以我一直将它与传统的 UI 开发(xml)进行比较。我在文章中注意到的 here ,

Composable functions can run in parallel

Compose can optimizerecomposition by running composable functions in parallel. This letsCompose take advantage of multiple cores, and run composable functionsnot on the screen at a lower priority.

This optimization means a composable function might execute within apool of background threads. If a composable function calls a functionon a ViewModel, Compose might call that function from several threadsat the same time.


这是否意味着 Compose 编译器可以使用后台线程来组合/重构,这与以前只允许主线程更新 UI 不同?
或者我在这里将 UI 开发的声明式风格与传统风格进行比较是错误的,我应该把以前的事情放在一边?

最佳答案

我尝试在一个相当小的应用程序中使用可组合函数编写当前线程名称 Thread.currentThread().name .它总是打印“主要”。但是从日志中我可以看到它们没有按调用顺序运行。编写 v1.0.2。
根据this blog post (2020 年 11 月 21 日),

In the future, compositions could be potentially offloaded todifferent threads, executed in parallel, in different order, orsimilar things. That’s a door for diverse potential optimizations theCompose team wants to keep open


也许它还没有进入生产阶段,但可能在路上。在编写代码时,我们牢记(如 doc 所说):
  • 可组合项可以按任何顺序执行,可以并行运行。不要依赖于以前的 Composable 的结果。也没有副作用和读/写全局变量。从 Composables 调用的回调可能会从不同的线程(“将来”)调用,它们应该是幂等的。
  • Composable 内部没有繁重的计算(如果必须,请记住它),即使它们是“将来”从后台线程调用的。可组合物必须快速处理快速重组。
  • 关于android - Jetpack Compose 可以从任何线程绘制/更新 UI 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68839242/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com