特牛网址导航

【深入kotlin】 - Flow 进阶_kotlin flow取消-CSDN博客

网友收藏
文章浏览阅读1.1k次。Flow 的收集动作总是发生在调用协程的上下文当中,而非定义 Flow 的上下文。运行输出结果如下(打开 debug 参数):可以看出 flow 运行于 collect 调用时的协程,即 runBlocking 开启的协程。这无疑会阻塞住主线程。因此我们可以将 flow 运行在其它上下文:程序报出如下异常:大意是收集线程发生在主线程,但 emit 线程发生在后台线程。withContext(Dispatchers.Default) 一句修改了 flow 的上下文,将 flow 的分发器修改到了 D_kotlin flow取消