java中如何收集协程流?

Emi*_*ann 6 java android coroutine kotlin kotlin-coroutines

我正在开发一个Android库,

当用户收到推送通知时,它可能包含深层链接,我需要返回到应用程序。

我在 kotlin 中做的没有问题。

这是需要发送深层链接时调用的函数

fun getDeepLinkFlow(): Flow<HashMap<String, String>?> = flow {
    emit(deepLinks)
}
Run Code Online (Sandbox Code Playgroud)

在我的 kotlin 测试应用程序中,我也成功地使用了,就像这样使用。

GlobalScope.launch(coroutineContext) {
    SDK.getDeepLinkFlow().collect { deepLinks ->
        println(deepLinks)
    }
}
Run Code Online (Sandbox Code Playgroud)

但现在,有一个 RN 项目想要使用该库,为了做到这一点,我们正在做一个 RN 模块,将 iOS 代码和 Android 代码结合起来。但它使用java。

那么,如何在 Java 代码上使用协程的收集功能呢?或者我可以做些什么不同的事情?

Kis*_*kae 1

Coroutines/Flow在 Java 中使用本质上很尴尬,因为它依赖于转换后的suspend代码来工作。

一种可能的解决方案是公开另一种使用Flowjava 代码的方法。使用RxJava 集成库,Flowable您可以公开Java 端可以使用的兼容程序。