如何使用新的androidx.lifecycle:*:2.2.0-alpha01获取lifecycle.coroutineScope

Raj*_*shi 12 android android-architecture-components android-jetpack

2019年5月7日androidx.lifecycle:*:2.2.0-alpha01发布,宣布:

此版本添加了新功能,增加了对Lifecycle和LiveData的Kotlin协程的支持。可以在此处找到有关它们的详细文档。

文档中提到我可以得到LifecycleScope

通过lifecycle.coroutineScopelifecycleOwner.lifecycleScope属性

但似乎我找不到它们。我目前的依赖是:

def lifecycle_ver = "2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_ver"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_ver"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_ver"

implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.2.1'
Run Code Online (Sandbox Code Playgroud)

可能是什么原因以及如何获得这些API?

小智 24

我实际上花了几个小时试图自己弄清楚这一点,结果发现它在一个仅存在于alpha版本的新程序包中。添加此内容,您应该会很好。

implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_ver"
Run Code Online (Sandbox Code Playgroud)

  • 我的天啊。我正在搜索数小时!这可行。(jetpack / ktx文档绝对令人痛苦。这么多不同的站点,但没有一个站点显示可用软件包和版本的清晰列表。Jetpack团队感到羞耻!) (9认同)
  • 谢谢,对我有用。只需使用来自 acrivity 的 `lifecycleScope.launch {...}` (2认同)

Jim*_*bdi 10

接受的答案是有效的,但我第一次被误用,所以我试图弄清楚,当前版本的lifecycleis"2.1.0"lifecycleScope,并且ViewModelScope在此版本中不可用,以便让他们使用

对于ViewModelScope

使用androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0-beta01或更高。

对于LifecycleScope

使用androidx.lifecycle:lifecycle-runtime-ktx:2.2.0-alpha01或更高。

此时2.4.1可用。