加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

如何正确的在 Android 上使用 Kotlin 协程?

发布时间:2019-10-24 15:17:41 所属栏目:业界 来源:kengsirLi
导读:媒介 你还记得是哪一年的 Google IO 正式公布 Kotlin 成为 Android 一级开拓说话吗?是 Google IO 2017 。现在两年时刻已往了,站在一名 Android 开拓者的角度来看,Kotlin 的生态情形越来越好了,相干的开源项目和进修资料也日渐富厚,身边乐意去行使可能

以是 livedata-ktx 的行使是有必然限定的。对付必要用户主动革新的场景,就无法满意了。在一次完备的生命周期内,一旦乐成执行完成一次,就没有步伐再触发了。 这句话不知道对差池,我小我私人是这么领略的。因此,照旧 viewmodel-ktx 的合用性更广,可控性也更好。

LifecycleScope

  1. implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0-alpha03" 

lifecycle-runtime-ktx 给每个 LifeCycle 工具通过扩展属性界说了协程浸染域 lifecycleScope 。你可以通过 lifecycle.coroutineScope 可能 lifecycleOwner.lifecycleScope 举办会见。示例代码如下:

  1. fun getMessageByLifeCycle(lifecycleOwner: LifecycleOwner) { 
  2.  lifecycleOwner.lifecycleScope.launch { 
  3.  val deferred = async(Dispatchers.IO) { getMessage("LifeCycle Ktx") } 
  4.  mMessage.value = deferred.await() 
  5.  } 

当 LifeCycle 回调 onDestroy() 时,协程浸染域 lifecycleScope 会自动打消。在 Activity/Fragment 等生命周期组件中我们可以很利便的行使,可是在 MVVM 中又不会过多的在 View 层举办逻辑处理赏罚,viewModelScope 根基就可以满意 ViewModel 中的需求了,lifecycleScope 也显得有点那么食之无味。可是他有一个非凡的用法:

  1. suspend fun <T> Lifecycle.whenCreated() 
  2. suspend fun <T> Lifecycle.whenStarted() 
  3. suspend fun <T> Lifecycle.whenResumed() 
  4. suspend fun <T> LifecycleOwner.whenCreated() 
  5. suspend fun <T> LifecycleOwner.whenStarted() 
  6. suspend fun <T> LifecycleOwner.whenResumed() 

可以指定至少在特定的生命周期之后再执行挂起函数,可以进一步减轻 View 层的承担。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读