Ami*_*mit 12 android kotlin android-jetpack-compose
我最近开始学习 Jetpack Compose,所以我一直将它与传统的 UI 开发(xml)进行比较。我在这里的文章中注意到的,
可组合函数可以并行运行
Compose 可以通过并行运行可组合函数来优化重组。这使得 Compose 可以利用多核的优势,并以较低的优先级运行不在屏幕上的可组合函数。
这种优化意味着可组合函数可以在后台线程池中执行。如果可组合函数调用 ViewModel 上的函数,Compose 可能会同时从多个线程调用该函数。
这是否意味着 Compose 编译器可以使用后台线程来组合/重组,而不像以前只允许主线程更新 UI?
或者我在这里将 UI 开发的声明式风格与传统风格进行比较是错误的,我应该把以前的事情放在一边吗?
我尝试在一个相当小的应用程序中使用可组合函数编写当前线程名称Thread.currentThread().name
。它总是打印“main”。但从日志中我可以看到它们没有按照调用的顺序运行。撰写 v1.0.2。
根据这篇博文(2020 年 11 月 21 日),
\n\n\n将来,组合可能会被卸载到不同的线程,以不同的顺序并行执行,或者类似的事情。\xe2\x80\x99 是 Compose 团队希望保持开放的各种潜在优化之门
\n
也许它还没有投入生产,但可能正在路上。在编写代码时,我们请记住(正如文档所说):
\n