launch
launch用来启动协程,但是不需要获取运行后的返回结果。它类似于”射箭“场景,将箭发射出去,但是不需要箭返回。使用者不关心协程的返回值。
开启新的子协程,执行不阻塞当前线程的作业,不返回结果。
runBlocking
普通阻塞式函数,直接用GlobalScope执行阻塞式协程,一般只会用在单元测试中
async
async 返回 Deferred 类型,用来获取结果。
开启新的子协程,通过Deffer返回作业结果。相较于launch,async更进一步,用于异步执行耗时作业,并且需要返回值(如网络请求、数据库读写、文件读写),在执行完毕通过 await() 函数获取返回值。
withContext:不创建协程,直接在当前协程上执行代码块,并等待执行完毕,返回结果。一般应用于如主线程需要等待异步线程上传完图片后,再进行下一步操作等,需要等待切换线程后作业的操作。