简体   繁体   English

observeAsState 和 collectAsState 之间的区别以及何时在 Android Jetpack Compose 中使用它们?

[英]Difference between observeAsState and collectAsState and when to use each in Android Jetpack Compose?

I am learning Jetpack Compose but facing some issues in understanding states.我正在学习 Jetpack Compose,但在理解状态方面遇到了一些问题。 Can someone explain these two?有人可以解释这两个吗? observeAsState and collectAsState. observeAsState 和 collectAsState。 Thank you.谢谢你。

  1. observeAsState is an extension on LiveData . observeAsStateLiveData的扩展。
    Starts observing this LiveData and represents its values via State .开始观察这个LiveData并通过State表示它的值。
    Uses Lifecyle internally for safely observing the data.在内部使用Lifecyle来安全地观察数据。

  2. collectAsState is an extension on StateFlow . collectAsStateStateFlow的扩展。
    Collects values from this StateFlow and represents its latest value via State.从此StateFlow收集值并通过 State 表示其最新值。
    You need to handle the collection as per appropriate Lifecyle .您需要根据适当的Lifecyle处理集合。

Source: Compose#LiveData & Compose#Flow .来源: Compose#LiveDataCompose#Flow

An addition of Darshan´s answer is that in version 2.6.0-alpha.1 we have a new extension function that takes care of lifecylce when collecting StateFlow. Darshan 的另一个答案是,在版本 2.6.0-alpha.1 中,我们有一个新的扩展 function,它在收集 StateFlow 时处理生命周期。

Link of release notes: https://developer.android.com/jetpack/androidx/releases/lifecycle?hl=es-419#2.6.0-alpha01发行说明链接: https://developer.android.com/jetpack/androidx/releases/lifecycle?hl=es-419#2.6.0-alpha01

Example of use.使用示例。 https://medium.com/tech-takeaways/how-to-safely-collect-flows-lifecycle-aware-in-jetpack-compose-a-new-approach-ed20ead25be9 https://medium.com/tech-takeaways/how-to-safely-collect-flows-lifecycle-aware-in-jetpack-compose-a-new-approach-ed20ead25be9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Jetpack Compose collectAsState 问题 - Jetpack Compose collectAsState issue Jetpack Compose - 未解决的参考:observeAsState - Jetpack Compose - Unresolved reference: observeAsState 喷气背包组成。 无限调用observeAsState - jetpack compose. infinite call to observeAsState android jetpack compose中的“remember”和“mutableState”有什么区别? - What is the difference between "remember" and "mutableState" in android jetpack compose? 在 Jetpack Compose 中使用 .observeAsState() 时,如何在更改 MutableLiveData 的值后开始执行一段代码? - How to start executing a block of code after changing the value of MutableLiveData when using .observeAsState() in Jetpack Compose? 使用jetpack compose时android studio gradle脚本中的compileSdk和compileSdkVersion有什么区别 - What is difference between compileSdk and compileSdkVersion in android studio gradle script when using jetpack compose 在 android 中创建自定义视图和使用 jetpack compose 有什么区别 - what is the difference between creating custom view and using jetpack compose in android VIewModel observeAsState as Single event in Android Compose - VIewModel observeAsState as Single event in Android Compose 我得到“类型不匹配。 必需:State<string?> 使用 Jetpack 组合 viewModel.observeAsState() 时发现:字符串</string?> - I get “Type mismatch. Required: State<String?> Found: String” when Using viewModel.observeAsState() with Jetpack compose Jetpack Compose 中的 Surface 和 Card 有什么区别? - Whats the difference between Surface and Card in Jetpack Compose?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM