implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9"
//kotlin協(xié)程Android支持
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
1.是什么绘雁?
協(xié)程和線程是平行的概念票彪,廣義上的協(xié)程是比較低成本,輕量的外莲。
而kotlin中的協(xié)程是由kotlin官方提供的線程框架api猪半,kotin中的協(xié)程不是輕量級(jí)的線程,因?yàn)樗牡讓邮怯蒵ava線程實(shí)現(xiàn)的
可以將本在不同線程運(yùn)行的代碼寫在同一個(gè)代碼塊:
launch中的一段連續(xù)代碼偷线,就叫協(xié)程
2.suspend函數(shù)
suspend方法
suspend關(guān)鍵字本身不提供切換線程執(zhí)行方法的功能磨确,真正要實(shí)現(xiàn)掛起的功能需要在自己定義的掛起函數(shù)里面調(diào)用另一個(gè)掛起函數(shù)(此處為withContext,可把協(xié)程代碼切到另一個(gè)線程執(zhí)行声邦,完畢后再切回來)
suspend關(guān)鍵字是一個(gè)提醒乏奥,是函數(shù)的創(chuàng)建者對(duì)函數(shù)調(diào)用者的提醒:這是一個(gè)耗時(shí)函數(shù),請(qǐng)?jiān)趨f(xié)程里調(diào)用我
3.非阻塞式掛起
協(xié)程的非阻塞式掛起只是用阻塞的方式寫出了非阻塞式的代碼