我一直在我的 Android 项目中大量使用协程。例如,我使用它们将阻塞调用和 CPU 密集型任务移交给线程池。这是launch(UI)
完美的工作:它确保继续在 UI 线程上恢复。
我还在使用协程来处理诸如等待第一次onDraw
调用、使用 a 恢复动画循环postOnAnimate()
等。在这些情况下,UI 上下文无法满足我的需要,因为它通过向事件提交项目来异步恢复继续循环,即使cont.resume()
在 UI 线程上调用。
onDraw
在我等待第一次调用 an的情况下,这变得特别糟糕ImageView
:我必须根据现在已知的视图尺寸重新定位图像。但是,由于协程异步恢复,onDraw()
完成,然后再运行几次,然后我的协程才会恢复。用户体验闪烁,因为不正确定位的图像短暂出现。
是否有一个选项可以强制 UI 调度程序cont.resume()
在 UI 线程上调用时立即恢复?