栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Kotlin】关键词suspend 线程操作的学习和async理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Kotlin】关键词suspend 线程操作的学习和async理解

背景

在kotlin 的项目中学习一些使用的方法和实际的应用:

  • suspend 到底怎么使用呢?
package im.zego.takeaguess.logic.sdk.interfaces

import android.app.Application
import im.zego.zim.entity.ZIMMessage
import kotlinx.coroutines.flow.FlowCollector

interface IZIMManager {

    fun init(application: Application)

    fun unInit()

    
    suspend fun login(userId: String, userName: String, token: String): Result

    
    fun logout()

    
    suspend fun createRoom(roomId: String, roomName: String): Result

    
    suspend fun joinRoom(roomId: String): Result

    
    suspend fun logoutRoom(roomId: String): Result

    
    suspend fun observeRoomMessage(collector: FlowCollector>)
}
答疑解惑

suspend函数的使用
主要是学习到一个async异步处理的深刻理解,这个关键词的中文意思是:悬挂。这让我直接就想到线程的挂起,要用的时候再释放资源。其实在kotlin中也是大同小异,不过使用的方法就比较特殊;和java就不太一样。


在实现了上述的接口Interface可以如下代码所示进行使用;
基本的逻辑就是一定要使用到关键词async进行异步处理。这可以节省资源和时间。

  val loginZimRoomDef = async(Dispatchers.IO) {
                zimManager.createRoom(
                    roomId = joinRoomResp.roomInfo.roomId,
                    roomName = joinRoomResp.roomInfo.name
                )
            } // 创建ZIM房间
            val loginExpressRoomDef = async(Dispatchers.IO) {
                expressManager.loginRoom(
                    roomId = joinRoomResp.roomInfo.roomId,
                    userId = AccountStore.userId,
                    userName = AccountStore.userName,
                    token = token
                )
            } // 进入Express房间
            val initCopyrightedMusicDef = async(Dispatchers.IO) {
                copyrightMusicManager.init(
                    userId = AccountStore.userId, userName = AccountStore.userName
                )

上述代码可以同时实现多个初始化的方法。
更多的用法请参考Composing suspending functions -kotlin 官网

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996309.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号