Android協(xié)程基礎(chǔ)使用總結(jié)-基礎(chǔ)開發(fā)看這一篇就夠了

目錄
1.協(xié)程是什么?
2.為什么需要協(xié)程?解決了什么問題?
3.概括一下協(xié)程的幾個(gè)常用概念?
4.協(xié)程的幾個(gè)最常用的方法是什么?
5.實(shí)戰(zhàn)使用場(chǎng)景示例

1.協(xié)程是什么?
背一句話:協(xié)程是一個(gè)輕量級(jí)的線程框架,能夠用同步的代碼寫出異步的邏輯,并且不會(huì)阻塞線程
2.為什么需要協(xié)程?
例如以前的網(wǎng)絡(luò)請(qǐng)求與更新UI數(shù)據(jù)的代碼,會(huì)出現(xiàn)大量的回調(diào)地獄


image.png

而使用協(xié)程之后:可以在IO線程中執(zhí)行網(wǎng)絡(luò)請(qǐng)求,能自動(dòng)切換主線程 然后更新UI


image.png

3.概括一下協(xié)程的幾個(gè)概念
作用域 GlobalScope lifecycleScope viewModelScope 然后.launch{ }
調(diào)度器 Dispatchers IO Main Default
suspend 掛起函數(shù)

4.使用方法
① 在Activity 和Fragment中:lifecycleScope.launch{} 開啟協(xié)程 作用域
② 使用withContext(Dispatchers.IO){} 來切換到IO線程中,處理耗時(shí)操作
③ 使用withContext(Dispatchers.Default){} 切換到default線程做復(fù)雜計(jì)算
④ suspend 掛起函數(shù)標(biāo)記, 用suspend 標(biāo)記網(wǎng)絡(luò)請(qǐng)求、數(shù)據(jù)庫請(qǐng)求 等函數(shù)
⑤ 為了什么?提醒開發(fā)者 這個(gè)函數(shù)是耗時(shí)操作 可以被協(xié)程掛起,暫停
⑥ delay(2000)等待2秒, delay不會(huì)像sleep那樣阻塞線程, 可以等兩秒后執(zhí)行后續(xù)的
ps:慎用GlobalScope,因?yàn)樗鼪]綁定生命周期,容易造成內(nèi)存泄漏
ps:runBlocking一般在測(cè)試中用,Android開發(fā)中很少使用,會(huì)阻塞線程

5.實(shí)戰(zhàn)的場(chǎng)景


image.png
image.png

image.png

image.png
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容