kotlin協程的簡單使用

kotlin的定義

對我來說就是跟線程一樣的東西,是個線程框架,讓開發者更好的處理併發,以及解決回調問題

協程的使用

在app的build.gradle中添加依賴

kotlin {
    experimental {
        coroutines 'enable'
    }
}

dependencies {
	implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.0'
}

線程切換

創建協程,並指定運行的線程

		GlobalScope.launch (Dispatchers.IO){//切換到IO線程執行
            saveToDatabase(data)
        }
        GlobalScope.launch (Dispatchers.Main){//切換到Main線程執行
            updateViews(data)
        }

結合使用

		GlobalScope.launch (Dispatchers.Main){
            val token = api.getToken()//網絡請求:後臺線程
            val user = api.getUser(token)//網絡請求:後臺線程
            nameTv.text = user.name //更新UI:主線程
        }

當然,還有併發的網絡請求

		GlobalScope.launch (Dispatchers.Main){
            val avaTar = async { api.getAvatar(user) }//獲取用戶頭像
            val logo = async { api.getCompanyLogo(user) }//獲取公司logo
            val merged = suspendingMerged(avaTar,logo)//合併
            show(merged)//展示
        }

也可以通過withContext函數實現多線程的協作

		GlobalScope.launch (Dispatchers.Main){
           withContext(Dispatchers.IO){
               ……
           }
            ……
            withContext(Dispatchers.IO){
                ……
            }
            ……
       	 }

withContext函數會自動切回調用它的線程,可以把函數放進方法裏面,使代碼看起來更加簡潔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章