跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • withContext 与 suspend 区别是什么?
未分類
21 7 月 2020

withContext 与 suspend 区别是什么?

withContext 与 suspend 区别是什么?

資深大佬 : andev 4

withContext 是指定协程运行的线程,suspend 是挂起,那请求网络时见到这两种写法,一种用 withContext(Dispatchers.IO)请求,另一种在 viewscope 里调用 suspend 请求网络的方法,这两种方法有什么区别?
第二种方法里的 suspend 方法还是在主线程里执行吗?
大佬有話說 (6)

  • 資深大佬 : domosekai

    viewscope 里调用的 suspend 函数在不在主线程执行,要看这个函数本身的实现选择了什么 context (它自己会调用 withcontext ),一般而言网络相关的 API 如果封装成了 suspend 那么就不会在主线程执行,但这个是它自己选择的 context 而不是你怎么调用它所决定的。你也完全可以写一个在主线程跑的 suspend 函数。

  • 資深大佬 : domosekai

    至于你说的前一种,一般是要调用的函数不是 suspend 而是 blocking 的,那么就得由你给一个非主线程的 context,因为他自己不选择

  • 資深大佬 : mxalbert1996

    withContext 是在一个 CoroutineScope 里切换 Context 用的。suspend fun 只是表示这个方法会挂起 Coroutine 所以必须在 CoroutineScope 里或者由其他 suspend fun 调用,它本身不指定 Context 。用途完全不一样。
    话说这种基本的东西还是建议去看官方文档,研究一下教程里的案例就很容易理解了。

  • 資深大佬 : maninfog

    suspend 关键字标记函数表示该函数只能在协程 scope 中或者另一个 suspend 方法中调用,一般该函数为耗时函数。
    withContext 则表示将接受的代码块内的东西放到指定 Dispatcher 中调用,调用完毕后自动切回当前 scope 继续运行。

  • 資深大佬 : fansangg

    withContext 切线程,suspend 标识一个协程函数

  • 資深大佬 : cjh1095358798

    suspend 只是一个标记

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具