外观
launch 和 async 的区别是什么?何时应该使用其中一个?
标准回答
launch 启动一项工作;async 启动一项需要返回结果的工作,之后用 await 等结果。
通俗例子
加载头像和用户名可并行发起两个 async,再合并结果;只记录一次日志且不需要返回值时,用 launch 更直接。
深入解释
**返回值有什么不同:**launch 返回 Job,用于等待结束或取消;async 返回 Deferred,除了生命周期还可通过 await 取得计算结果。await 通常挂起协程,而不是忙等占着线程。
**什么时候才是并行:**先启动两个独立 async,再分别 await,工作才有重叠的机会。创建一个就立即 await,再创建下一个,仍然是顺序执行;是否多核并行还取决于调度器。
内容来源
- Android · AI Agent 知识手册 · 原条目
4.2.2