首页 > 解决方案 > 如何将回调/流返回给调用者线程?

问题描述

我有一些“A”类,其内部工作是使用 rx 或带有流的协同程序执行的。类“A”不应该返回任何 rx/协程(和流)的实例,它们的工作应该被隐藏,我们需要未来的回调结果并在自定义观察者上观察。

调用者类“B”可以在主(UI)线程或其他线程上调用 A 的方法。如果方法是在 Ui 线程上调用的,就很容易了,因为我们可以在 Main 线程上观察并使用相应的协程作用域。

但是如果调用者的线程不是主线程,我们如何处理这种情况呢?

标签: androidkotlinrx-javakotlin-coroutinesflow

解决方案


利用Handler

class A {
    private val mainHandler = Handler(Looper.getMainLooper())

    fun <T> observe(onChanged: (T) -> Unit) {
       ...
       mainHandler.post { onChanged(value) }
    }
}



推荐阅读